在我的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成为水平方向 . 我一直在尝试向ItemsControl添加一个Style来更改TextBlock.Text,但由于Setters的优先级较低,因此不会覆盖原始Text,尽管我可以更改字体大小和前景色 . 我也不太清楚为什么这个代码甚至会创建一个TextBlock,因为我没有以任何方式指定它 . 但据我所知,ItemsControl将根据ItemsSource的类型继承一些DataTemplate . 我也尝试删除ItemsPanelTemplate并将其替换为此

<ItemsControl.ItemTemplate>
 <DataTemplate>
  <TextBlock Text="Test"/>
 </DataTemplate>
</ItemsControl.ItemTemplate>

这实际上会打印出单词“Test”,但它不会水平对齐,所以在我的屏幕上它不会显示(因为我有垂直的屏幕空间) . 我还无法弄清楚如何使用ItemsSource来设置最后一个示例中提供的TextBlock.Text的值,我需要做的是改变它(我有一套如何处理的规则不同的笔记) .

TL:DR:我的ItemsControl自动打印出一个TextBlock,我需要更改文本,我还需要保持水平方向 . 第一段代码给了我正确的方向,但我无法弄清楚如何以任何方式改变文本 . 第二个示例有错误的方向,但我可以操作TextBlock.Text,但我正在努力使用语法来改变它的正确方法 .

任何帮助或指针都非常感谢 .