MVVM:绑定到ListBox.SelectedItem?

时间:2009-09-05 22:06:56

标签: wpf data-binding 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");
    }
}

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

<ListBox ItemTemplate="{StaticResource MasterTemplate}"
         ItemsSource="{Binding Path=DisneyCharacters}" 
         SelectedItem="{Binding Path=Selectedtem, Mode=TwoWay}" 
         HorizontalAlignment="Stretch" />

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

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

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

1 个答案:

答案 0 :(得分:47)

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

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