我目前在C# WPF中苦于DataGridComboBoxColumn。
我有一个名为ToolModel的类。
数据被存储到数据库中,并加载到我的ViewModel中。
我想在DataGrid中显示数据,并尝试添加一个DataGridComboBoxColumn来选择相应工具的ToolType。因此,我添加了以下XAML定义(这已经是一种解决方法-但这是我能够使它接近工作的唯一方法):
它显示了所有的ToolTypes元素,但是没有我所选的工具引用的元素。
有什么想法可以在ComboBoxColumn中查找ToolTypes并将引用的类型显示为选定项吗?
提前感谢。
我有一个名为ToolModel的类。
class ToolModel
{
public long Id { get; set; }
public string Number { get; set; }
public string Name { get; set; }
public string Coating { get; set; }
public bool Thread { get; set; }
public string Kind { get; set; }
public ToolTypeModel Type { get; set; }
}
和类ToolTypeModel
public class ToolTypeModel
{
public long Id { get; set; }
public string Name { get; set; }
}
数据被存储到数据库中,并加载到我的ViewModel中。
class ToolsViewModel
{
public ObservableCollection<ToolModel> Tools { get; set; }
public ObservableCollection<ToolTypeModel> ToolTypes { get; set; }
public ToolsViewModel()
{
Tools = new ObservableCollection<ToolModel>(ToolModel.GetTools());
ToolTypes = new ObservableCollection<ToolTypeModel>(ToolTypeModel.GetToolTypes());
}
}
我想在DataGrid中显示数据,并尝试添加一个DataGridComboBoxColumn来选择相应工具的ToolType。因此,我添加了以下XAML定义(这已经是一种解决方法-但这是我能够使它接近工作的唯一方法):
<DataGrid x:Name="ToolsDataGrid" ItemsSource="{Binding Tools}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Nummer" Binding="{Binding Number}" />
<DataGridComboBoxColumn
Header="Typ"
SelectedValueBinding="{Binding Type, Mode=TwoWay}"
SelectedValuePath="Id"
DisplayMemberPath="Name">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="ItemsSource" Value="{Binding Path=DataContext.ToolTypes, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="ItemsSource" Value="{Binding Path=DataContext.ToolTypes, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
它显示了所有的ToolTypes元素,但是没有我所选的工具引用的元素。
有什么想法可以在ComboBoxColumn中查找ToolTypes并将引用的类型显示为选定项吗?
提前感谢。
ToolTypeId
与每个ToolModel
上的Type
匹配。对于第二个版本,您尝试取消注释Equals()
覆盖了吗? - 15ee8f99-57ff-4f92-890c-b56153SelectedItemBinding="{Binding Type}" SelectedValueBinding="{Binding Id}" SelectedValuePath="Id"
- 现在它可以工作了!谢谢!! - johannespartin