2017-10-04 9 views
0

ViewModelで完全にリストを表示するコンボボックスがありますが、リストから選択した項目を選択するとViewModel画面が表示されるようにしています私はリストの中から1人だけがこれをすることを望みますか?だからここ は、私がChooseViewに持っているものです。ViewModel画面を表示するためにcomboboxを取得するCaliburn Micro MVVM

<ComboBox x:Name="CatalogName1" SelectedItem="{Binding SelectedCatalog1}" Style="{DynamicResource appComboBox}" Grid.Row="1" Grid.Column="1" > 
    </ComboBox> 

とChooseViewModelで:

public List<string> CatalogName1 
    { 
     get 
     { 
      return new List<string> { "New", "Replace", "Extended", "Nothing", "ShowScreen" }; 
     } 


    } 

    private string selectedCatalog1; 
    public string SelectedCatalog1 
    { 
     get 
     { 
      return this.selectedCatalog1; 
     } 

     set 
     { 
      this.selectedCatalog1 = value; 
      this.NotifyOfPropertyChange(() => this.SelectedCatalog1); 
     } 
    } 

コンボリストで「ShowScreenは」ShowScreenViewModelが表示されるはずですが、私はゲッターセッターで試してみましたそして、それは私には意味を作っていない

+0

'set'の' value'が 'ShowScreen'と等しいかどうかを調べるメソッドを作るべきです。もしそうなら、あなたの 'ViewModel'を有効にし、そうでなければテキストを設定し、notifyを呼び出します。 – arcticwhite

+0

どうすればその方法について説明しますか?申し訳ありません。 –

+0

ViewModelをアクティブにする方法、またはShowScreenをクリックしたかどうかをチェックする方法を意味しますか? – arcticwhite

答えて

1

さて、これは...私は問題を解決するような方法である

private string selectedCatalog1; 
    public string SelectedCatalog1 
    { 
     get 
     { 
      return selectedCatalog1; 
     } 
     set 
     { 
      selectedCatalog1 = value; 
      ValidateValue(value); 
      NotifyOfPropertyChange(() => SelectedCatalog1); 
     } 
    } 
    private void ValidateValue(string s) 
    { 
     if (s == "ShowScreen") 
     { 
      ActivateItem(new ShowScreenViewModel()); 
     } 
    } 
+0

さん、ご協力いただきありがとうございます –

関連する問題