在我的WPF项目中,我试图使ItemsSource显示ObservableCollection的每个元素,并将它们显示为TextBlocks。虽然我确实需要以某种方式改变实际的文本,无论是使用转换器还是通过触发器。整个ItemsControl位于ViewModel中,适用于不同的客户,可能有任何地方,从无到有几个不同的注释,存储在ObservableCollection中
我的ItemsControl设置如下:
<ItemsControl ItemsSource="{Binding Notes}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"></StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
ItemsPanelTemplate使Notes成为水平方向。我一直在尝试将一个Style添加到ItemsControl来更改TextBlock.Text,但由于Setters的优先级较低,因此它不会覆盖原始Text,尽管我可以更改字体大小和前景色。我也不太清楚为什么这个代码甚至会创建一个TextBlock,因为我没有以任何方式指定它。但据我所知,ItemsControl将根据ItemsSource的类型继承一些DataTemplate。我也尝试删除ItemsPanelTemplate并将其替换为
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="Test"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
这实际上会打印出单词&#34; Test&#34;,但它不会水平对齐,所以在我的屏幕上它不会显示(因为我垂直有限的屏幕空间)。我还无法弄清楚如何使用ItemsSource来设置最后一个示例中提供的TextBlock.Text的值,我需要做的是改变它(我有一套如何处理的规则不同的笔记)。
TL:DR: 我的ItemsControl自动打印出一个TextBlock,我需要更改文本,我还需要保持水平方向。第一段代码给了我正确的方向,但我无法弄清楚如何以任何方式改变文本。第二个示例有错误的方向,但我可以操作TextBlock.Text,但我正在努力修改它以正确的方式改变它。
非常感谢任何帮助或指示。