在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将是一个段落或其他容器控件,可以保存格式化文本。
答案 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; }
}