我有一个包含3列的ListView:
<ListView ItemsSource="{Binding ParamName}" HorizontalAlignment="Left" Height="109" Margin="10,87,0,0" VerticalAlignment="Top" ScrollViewer.HorizontalScrollBarVisibility="Disabled" Width="281">
<ListView.View>
<GridView>
<GridView.ColumnHeaderContainerStyle>
<Style TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="IsEnabled" Value="False"/>
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="TextElement.Foreground" Value="Black"/>
</Trigger>
</Style.Triggers>
</Style>
</GridView.ColumnHeaderContainerStyle>
<GridViewColumn Header="Name" Width="60"/>
<GridViewColumn Header="Type" Width="60"/>
<GridViewColumn Header="Content" Width="156"/>
</GridView>
</ListView.View>
</ListView>
目前,我已将ParamName
设置为我的ItemsSource,这显然无法以这种方式达到预期效果。
在我的ViewModel中,每个列都有ObservableCollections(名称为ParamName
,Type为ParamType
,内容为ParamContent
。那些ObservableCollections已正确填充,我可以通过Binding接收数据,但我无法用各自的数据填充列。
我已经想到了某些可能的解决方案,但它们似乎都没有用。这个问题的最佳方法是什么?
这是它的样子(左)以及它应该如何(右):
在他们的类型之后命名它们可能会有点混乱。
答案 0 :(得分:2)
您有三个集合,但只有一个是绑定的。所以所有列都具有相同的值。 尝试创建一个包含所有需要的集合:
ObservableCollection<MyRow>
其中MyRow
是具有您需要的属性的类或结构。
如果您已经拥有这些集合 - 尝试将其连接到一个主要集合并告诉GridColumns您希望绑定到每个列的属性,但我不确定它是否可以使用ObservableCollections - 如果他们有不同的长度怎么办?
你仍然可以从这三个中创建自己的Collection - 只需解析它......