2016-09-06 14 views
1

各データグリッド行にコンボボックスを作成しました。以下のコードは、コンボボックスを作成するために使用されます。コンボボックスのSelectedItem値がwpfのviewmodelからの更新時に空になる

<ComboBox Width="166" 
      ItemTemplate="{StaticResource GridBinding}" 
      SelectedItem="{Binding Path=Car, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, IsAsync=True}" 
      SelectedValue="{Binding Path=Car, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, IsAsync=True}"> 
    <ComboBox.GroupStyle> 
     <GroupStyle HeaderTemplate="{StaticResource GroupHeader}" /> 
    </ComboBox.GroupStyle> 
    <ComboBox.Style> 
     <Style TargetType="ComboBox"> 
      <Setter Property="ItemsSource" Value="{Binding Path=Cars}" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType=DataGridCell}}" Value="True"> 
        <Setter Property="ItemsSource" Value="{Binding Path=DataContext.GroupedCars, RelativeSource={RelativeSource AncestorType=DataGrid}}" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </ComboBox.Style> 
</ComboBox> 

コンボボックスに「のSelectedItemを」結合するための「車」プロパティは、「カー」などのID、名前、のようないくつかのプロパティを保持するクラスのオブジェクトであります

私が直面している問題は、 "Car"プロパティの値を更新し、そのセッターで "NotifyPropertyChanged"を呼び出すと、コンボボックスの "SelectedItem"の値が空白/空になります。

お勧めします。

+0

SelectedItem ** OR ** SelectedValueの両方を使用する必要はありません。 – ibebbs

+0

"SelectedItem"のみを使用すると、viewmodelから変更するとUIの値が更新されません。これは、「SelectedItem」が、参照を使用してitemourceの各項目に値を比較するためです。 –

答えて

0

SelectedItemはコレクション内に存在しなくなりました(ItemSourceを更新すると)、nullに設定されます。

私は今、あなたは更新時に最初の項目が選択されます

<ComboBox ItemsSource="{Binding Cars}" 
      SelectedItem="{Binding Car}"> 
    <ComboBox.Style> 
     <Style TargetType="ComboBox"> 
      <Style.Triggers> 
       <Trigger Property="SelectedItem" Value="{x:Null}"> 
        <Setter Property="SelectedIndex" Value="0" /> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </ComboBox.Style> 
</ComboBox> 

を証明するために、あなたのXAMLを簡素化しました。

+0

ご協力ありがとうございます。 ibebbsが提案した上記のアプローチは、リンク[https://rachel53461.wordpress.com/2011/08/20/comboboxs-selecteditem-not-displaying/] –

関連する問題