代码之家  ›  专栏  ›  技术社区  ›  sipsorcery

ListView中的WPF文本格式

  •  1
  • sipsorcery  · 技术社区  · 16 年前

    在WPF列表视图中显示项目时,我需要应用一些文本格式。文本格式没什么特别的,只是在文本中的某些字符串上设置不同的背景颜色。

    文本本身不适合不同的列,因此不能将样式应用于其中一个ListView列。

    我很确定答案是以某种方式在ListView中的textBlock控件中使用段落或运行,但在XAML中找不到该如何操作。到目前为止,我所做的证明了我正在努力做的事情,但这行不通的是:

    <ListView>
      <ListView.View>
        <GridView>
          <GridViewColumn Width="600">
            <GridViewColumn.CellTemplate>
              <DataTemplate>
                <TextBlock>
                  <Paragraph>
                    <Binding Path="ListDescription" />
                  </Paragraph>
                </TextBlock>
              </DataTemplate>
             </GridViewColumn.CellTemplate>
          </GridViewColumn>
        </GridView>
      </ListView.View>
    </ListView>
    

    绑定到的ListDescription prpoperty将是一个段落或其他可保存格式化文本的容器控件。

    2 回复  |  直到 16 年前
        1
  •  0
  •   Scott Weinstein    16 年前

    我认为这在纯XAML中是不可能的。您可以使用textBlock或richtextBlock将整个字符串格式化为相同的样式,但要对子字符串应用不同的格式,则需要用户控件或某种其他形式的代码逻辑,例如值转换器。

        2
  •  0
  •   Community CDub    7 年前

    我找到了一个相关问题的答案: How would I databind a Paragraph to a TextBlock? .

    <GridViewColumn Width="600">
      <GridViewColumn.CellTemplate>
        <DataTemplate>
          <ItemsControl ItemsSource="{Binding ListDescription}">
            <ItemsControl.ItemsPanel>                   
               <ItemsPanelTemplate> 
                 <WrapPanel/>                    
               </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>  
          </ItemsControl>
        </DataTemplate>
      </GridViewColumn.CellTemplate>
    </GridViewColumn>
    

    对于我绑定到ListView的数据源,我有:

    public InlineCollection ListDescription
    {
        get { return GetFormattedHistoryStatement().Inlines; }
    }