MVVM:绑定到ListBox.SelectedItem?

Dav*_*man 40 data-binding wpf mvvm

如何将视图模型属性绑定到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");
    }
}
Run Code Online (Sandbox Code Playgroud)

我想将SelectedItem属性绑定到列表框中选定的项目.这是列表框的XAML:

<ListBox ItemTemplate="{StaticResource MasterTemplate}"
         ItemsSource="{Binding Path=DisneyCharacters}" 
         SelectedItem="{Binding Path=Selectedtem, Mode=TwoWay}" 
         HorizontalAlignment="Stretch" />
Run Code Online (Sandbox Code Playgroud)

这是我的问题:当我更改列表框中的选择时,视图模型SelectedItem属性未更新.

我做了一个测试,我暂时用SelectedIndex属性替换了视图模型SelectedItem属性,并将其绑定到ListBox.SelectedIndex属性.该属性更新很好 - 它只是我无法工作的SelectedItem属性.

那么,我该如何修复SelectedItem绑定?谢谢你的帮助.

Dav*_*man 47

好吧,它就像生命一样重要.在XAML中.我绑定到视图模型属性"Selectedtem".不幸的是,实际名称是"SelectedItem".所以这段代码实际上是有效的 - 我在今天下午早些时候解决了这个问题,然后在下午剩下的时间和整个晚上搜索网页,然后才注意到拼写错误.

我的妻子今天下午3点告诉我,"你知道,事情会变得很小." 它确实如此 - 一封丢失的字母"我".好吧,至少我现在可以去睡觉了.

  • 为了帮助您更快地找到这些问题,如果您调试应用程序,您应该在Visual Studio的"输出"窗口中看到WPF绑定错误,指示属性"Selectedtem"不存在.希望这将有助于您在将来更快地追踪此类错误. (51认同)