我成功地将集合绑定到DataGrid,并且还成功地将属性绑定到DataGridComboBoxColumn。 (有一个名为snoop的WPF工具允许我调查数据是否已绑定)。
但由于某种原因,初始数据未显示。仅在我手动更改选择后。价值明显可用。
感谢任何提示或帮助!
谢谢,
这是我的XAML:
<DataGridComboBoxColumn Width="*"
DisplayMemberPath="RedOms"
Header="MyHeader"
ItemsSource="{Binding Source={StaticResource MyModel},
Path=SRCollection,
Mode=OneWay}"
SelectedValueBinding="{Binding AZSR,
Mode=TwoWay}"
SelectedValuePath="ID">
<DataGridComboBoxColumn.CellStyle>
<Style BasedOn="{StaticResource EDGridCell}" TargetType="DataGridCell">
<Setter Property="IsEnabled" Value="False" />
<Style.Triggers>
<DataTrigger Binding="{Binding AZBev, Mode=OneWay}" Value="False">
<Setter Property="Background" Value="{StaticResource KlrColor}" />
<Setter Property="IsEnabled" Value="True" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridComboBoxColumn.CellStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="Background" Value="{StaticResource KlrColor}" />
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
这是静态资源EDGridCell
<Style x:Key="EDGridCell" TargetType="{x:Type DataGridCell}">
<EventSetter Event="UIElement.PreviewMouseLeftButtonDown" Handler="DataGridCell_PreviewMouseLeftButtonDown" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Yellow" />
<Setter Property="Foreground" Value="Black" />
</Trigger>
</Style.Triggers>
</Style>
答案 0 :(得分:1)
覆盖等于,因为您的项目可能与您的项目集合中的项目实际上不是同一个实际实例,因此绑定不起作用。 Snoop将显示相同的值,因此您可能会认为它是相同的,而实际上并非如此。把它放在定义对象的类中,用你的类类型替换MyClass等。
public override bool Equals(object obj)
{
if (obj == null || !(obj is MyClass))
return false;
return ((MyClass)obj).Id == this.Id);
}
更多信息: https://rachel53461.wordpress.com/2011/08/20/comboboxs-selecteditem-not-displaying/#comments