我在DataGrid中有DataGridComboBoxColumn:
<DataGridComboBoxColumn Header="{x:Static Properties:Resources.Unit}" Width="Auto"
SelectedValueBinding="{Binding UnitUnitId}"
SelectedValuePath="UnitId"
DisplayMemberPath="Name" >
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Path=DataContext.Units,RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"/>
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Path=DataContext.Units,RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"/>
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>和ComboBox:
<ComboBox x:Name="unitBox" ItemsSource="{Binding Path=Units}"
SelectedItem="{Binding TaxSubGroup.Unit}"
Grid.Row="2"
Grid.Column="1" Margin="11,11,0,0" HorizontalAlignment="Stretch">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Converter={x:Static c:UnitToStringConverter.Default}}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>单位属性:
public ObservableCollection<Unit> Units
{
get
{
return _units;
}
set
{
if(_units!=value)
{
_units = value;
RaisePropertyChanged("Units");
}
}
}当我更改ComboBoxes的值时,DataGridComboBoxColumn值会自动更新,但更改DataGrid的comboxColumn值不会更新ComboBoxes的值。为什么?
已更新
问题出在DataGridComboBoxCulumn的SelectedValueBinding属性中。我所需要的就是添加UpdateSourceTrigger属性:
SelectedValueBinding="{Binding UnitUnitId,UpdateSourceTrigger=PropertyChanged}"发布于 2011-11-22 16:11:22
是否在UnitUnitId属性的设置器中更新TaxSubGroup.Unit?
在您的DataContext模型类中,执行类似如下的操作...
public int UnitUnitId
{
get
{
return this.unitID;
}
set
{
this.unitID = value;
this.TaxSubGroup.Unit = Units.FirstOrDefault(u => u.UnitID == value);
this.NotifyPropertyChange("UnitUnitId");
}
}这将通过引用匹配Combobox的SelectedItem。
https://stackoverflow.com/questions/8223071
复制相似问题