ListView中的WPF文本格式

时间:2009-03-10 00:50:33

标签: c# wpf listview

在WPF ListView中显示项目时,我需要应用一些文本格式。文本格式化并不是太花哨,只是在文本中的某些字符串上设置不同的背景颜色。

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

我很确定答案是以某种方式在ListView中的TextBlock控件中使用Paragraphs或Runs但我无法在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 个答案:

答案 0 :(得分:0)

我不认为这在纯XAML中是可行的。您可以使用textblock或RichTextBlock格式化具有相同样式的整个字符串,但要将不同的格式应用于子字符串,并且您需要用户控件或其他形式的代码逻辑 - 例如值转换器。

答案 1 :(得分:0)

我在相关问题上找到了答案: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; }
}