我在WPF中有一个显示一些数据网格的数据网格。从ViewModel检索数据,其中包含以下属性:
Public ReadOnly Property Devices() As List(Of Device)
Get
Return FDevices
End Get
Public ReadOnly Property ClientNetworks() As List(Of network)
Get
Return fnetwork
End Get
End Property
构建视图模型后,两个属性都填充了数据。 要使用Datagrid中的属性,请使用以下XAML。
<DataGrid ItemsSource="{Binding Devices}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTemplateColumn Header="Customer" >
<DataGridTemplateColumn.CellTemplate >
<DataTemplate>
------------------ <TextBlock Text="{Binding ClientNetwork.Description}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
------------------> <ComboBox ItemsSource="{Binding ClientNetwork}" DisplayMemberPath="Description"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid>
这应该显示带有描述的文本框和编辑时带字符串的组合框。
在Datagrid之外,组合框工作正常。我知道这是因为Datagrid上设置了ItemsSource,但我似乎无法找到如何使其工作。我已经尝试了几个组合框代码的改动,但到目前为止还没有。
目标是让用户能够编辑单元格并显示一个组合框,从中可以选择一个字符串,然后相应的int将保存在数据库中。
<ComboBox ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}},Path=DataContext.ClientNetworks}"
DisplayMemberPath="Description"
SelectedItem="{Binding ClientNetwork}"
/>
这就是我如何修复datacontext的休息
答案 0 :(得分:0)
我找到了一种方法来完成它,但我不确定这是应该做的方式
<Window.Resources>
<CollectionViewSource Source="{Binding ClientNetworks}" x:Key="clientnetworks" />
</Window.Resources>
并在组合框中
<ComboBox ItemsSource="{Binding Source={StaticResource clientnetworks}}" DisplayMemberPath="Description" />