ビュー モデル プロパティを ListBox.SelectedItem プロパティにバインドするにはどうすればよいですか?
これを理解するために、簡単な MVVM デモを作成しました。私のビュー モデルには次のプロパティがあります。
private ObservableCollection<DisneyCharacter> p_DisneyCharacters;
public ObservableCollection<DisneyCharacter> DisneyCharacters
{
get { return p_DisneyCharacters; }
set
{
p_DisneyCharacters = value;
base.FirePropertyChangedEvent("DisneyCharacters");
}
}
private DisneyCharacter p_SelectedItem;
public DisneyCharacter SelectedItem
{
get { return p_SelectedItem; }
set
{
p_SelectedItem = value;
base.FirePropertyChangedEvent("SelectedItem");
}
}
SelectedItem プロパティをリスト ボックスで選択された項目にバインドします。リスト ボックスの XAML は次のとおりです。
<ListBox ItemTemplate="{StaticResource MasterTemplate}"
ItemsSource="{Binding Path=DisneyCharacters}"
SelectedItem="{Binding Path=Selectedtem, Mode=TwoWay}"
HorizontalAlignment="Stretch" />
問題は次のとおりです: リスト ボックスで選択を変更しても、ビュー モデルの SelectedItem プロパティが更新されません。
ビュー モデルの SelectedItem プロパティを一時的に SelectedIndex プロパティに置き換え、それを ListBox.SelectedIndex プロパティにバインドするテストを実行しました。そのプロパティは正常に更新されました。SelectedItem プロパティだけが機能しません。
では、SelectedItem バインディングを修正するにはどうすればよいでしょうか? ご協力ありがとうございます。
ベストアンサー1
まあ、そこにあります。実物と同じくらい大きいです。XAML では、次のビュー モデル プロパティにバインドしていました。
Selectedtem
^^
残念ながら、実際の名前は ですSelectedItem
。つまり、このコードは実際に機能します。私は今日の午後早くに問題を解決し、その後、午後の残りと夕方ずっとウェブを調べて、スペルの間違いに気付きました。
妻は今日の午後3時にこう言いました。「ほら、それは小さなものになるだろう。「そして、その通りになりました――手紙がなくなってしまいましたI
。まあ、少なくとも今は寝ることができます。」