关于在MVVM中绑定Listbox.SelectedItem的说明

时间:2013-10-01 18:21:59

标签: c# wpf mvvm listbox

我的一个用户控件中有一个ListBox,我希望获得SelectedItem,以便在ViewModel中使用。 ListBoxTextBlocks组成。

This question几乎是对我的问题的直接回答,但我不明白DisneyCharacter(他的收藏类型)来自哪里,或者它与ListBox的关系

我的类型是TextBlock吗?

请求ListBox的XAML:

<ListBox Margin="14,7,13,43" Name="commandListBox" Height="470" MinHeight="470" MaxHeight="470" Width="248" >
               <TextBlock Text="Set Output" Height="Auto" Width="Auto" />
               <TextBlock Text="Clear Output" Height="Auto" Width="Auto" />
               <TextBlock Text="Follow Left Tape Edge" Height="Auto" Width="Auto" />
               <TextBlock Text="Follow Right Tape Edge" Height="Auto" Width="Auto" />
               <TextBlock Text="Follow Tape Center" Height="Auto" Width="Auto" /></ListBox>

1 个答案:

答案 0 :(得分:2)

由于TextBlock的输出是字符串,您将绑定到字符串属性,您将绑定到ViewModel中的字符串或后面的代码。

<ListBox SelectedItem = "{Binding myString}">
     .......
</ListBox>

然后在你的datacontext中设置一个像这样的字符串属性

public string myString {get; set;}

现在,无论何时单击某个项目,该文本块中的文本都将位于myString变量中。

如果您使用MVVM模型,您的属性将如下所示:

 private string _myString;

    /// <summary>
    /// Sets and gets the myString property.
    /// Changes to that property's value raise the PropertyChanged event. 
    /// </summary>
    public string myString
    {
        get
        {
            return _myString;
        }

        set
        {
            if (_myString == value)
            {
                return;
            }

            RaisePropertyChanging("myString");
            _myString = value;
            RaisePropertyChanged("myString");
        }
    }

如果您有任何问题,请与我们联系。