私はDataGridを持つWPFフォームを持っています。このDGには、ComboBoxを含むDataGridTemplateColumnが含まれています。 DGの新しい行をクリックしてComboboxから値を選択し、次の列にタブを移動すると、選択した値はコンボボックスの列に表示されません。データグリッド列は更新されません
しかし、私がタブバックすると、正しい値がコンボボックスに表示されます。
カラムからタブを外したときに、選択した値をコンボボックスカラムに表示するにはどうすればよいですか?ここで
は私のcomboxbox列XAMLです:CellTemplate
で
<DataGridTemplateColumn Header="Type" Width="160">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding LocationType.Description, Mode=TwoWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<ComboBox Name="cboAddrtype"
ItemTemplate="{StaticResource dtAddrType}" IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}, AncestorLevel=1}, Path=DataContext.LocationTypesObject, Mode=OneTime}"
SelectedItem="{Binding Path=SelectedLocationType, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"
SelectedValue="{Binding Path=LocationTypeKey, Mode=TwoWay}"
SelectedValuePath="InternalKey"
Width="100" />
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
なぜあなたは 'SelectedItem'と' SelectedValue'の両方を持っていますか?彼らは同じプロパティを設定する異なる方法です。 'SelectedItem'を削除することをお勧めします。これはアイテムを値ではなく参照で比較し、' OneWay'バインディングがあるからです。 – Rachel
更新。私は選択したアイテムをLocationTypeに変更しました。私の場合は、正しく動作するためにSelectedItemとSelectedValueの両方が必要です。 – Jerry