2016-05-01 30 views
2

ComboBoxにデフォルトの選択値を持たせたいとします。この場合、viewmodelの最初の項目になります。 viewmodelから リストビュー/コンボボックスでデフォルトの選択した項目を設定する方法uwp

<ComboBox Name="cat_choices" ItemsSource="{x:Bind ViewModel.Categories}" Width="300" VerticalAlignment="Center"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate x:DataType="local:Category">        
      <TextBlock Text="{x:Bind cat_name}"></TextBlock> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

private ObservableCollection<Category> categories = new ObservableCollection<Category>(); 
public ObservableCollection<Category> Categories { get { return this.categories; } } 

ありがとうございました。 、あなたはカテゴリーを移入が完了したら、

private int _SelectedIndex = 0; 

    public int SelectedIndex 
    { 
     get 
     { 
      return _SelectedIndex; 
     } 
     set 
     { 
      _SelectedIndex = value; 
      RaisePropertyChanged(nameof(SelectedIndex)); 
     } 
    } 

private Category _SelectedQuality = null; 
    public Category SelectedQuality 
    { 
     get 
     { 
      return _SelectedQuality; 
     } 
     set 
     { 
      _SelectedCategory = value; 
      RaisePropertyChanged(nameof(SelectedCategory)); 
     } 
    } 

のViewModelに新たに作成されたプロパティにコンボボックスのSelectedIndexSelectedItemプロパティを結合、XAMLでSelectedCategory = Categories.First();

設定:

答えて

1

はあなたのViewModelに2つの新しいプロパティを作成します。バインディングモードを2通りに設定します。

+0

RaisePropertyChangedの名前空間が見つかりません。私のアプリケーションはsqliteデータベースにリンクしています。 – rur2641

+1

私は同じアイデアを使用していますが、INotifyPropertyChangedを使用しています。私はxamlについてはわかりません:SelectedItem = "{バインディングViewModel.SelectedCategory、Mode = TwoWay}" ?? – rur2641

+1

SelectedItem = "{SelectedCategory、Mode = TwoWayをバインドする"}のみです。 RaisePropertyChangedは、INotifyPropertyChangedの実装で同じ理想です。 – thang2410199

0

イベントのComboBoxのコードの後ろにSelectedIndex0を設定するとどうなりますか?選択した項目を常に最初の項目に設定したいので、これは十分簡単です。

それとも

あなたはそれがXAML自体に実装する場合は、コンボボックス内のLoadedイベントのためEventTriggerを使用して0にプロパティSelectedIndexを設定するためにSetterを使用しています。

関連する問題