通过ItemsControl

时间:2018-04-12 13:53:41

标签: .net wpf data-binding itemscontrol textblock

在我的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,但我正在努力修改它以正确的方式改变它。

非常感谢任何帮助或指示。

0 个答案:

没有答案