在我的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,但我正在努力使用语法来改变它的正确方法 .
任何帮助或指针都非常感谢 .