绑定到Listbox项的成员

时间:2013-10-17 20:41:33

标签: c# wpf data-binding listbox

我不知道我是否会提供足够的信息,但我遇到了问题。 我将ObservableCollection绑定到普通的Listbox,一切正常,但ImageInfo有一个成员(Source),它包含图像所在的位置,我需要Listbox中当前所选项的Source成员。但是,我似乎并不知道从哪里开始。

2 个答案:

答案 0 :(得分:1)

也许你的xaml需要像<Image Source="{Binding ElementName=myListbox, Path=SelectedItem.Source}">这样的东西。与此处https://stackoverflow.com/a/1069389/1606534

绑定相关的其他示例和解释

答案 1 :(得分:1)

您是否在正常模式下绑定到以下属性:EG:&lt; combobox itemssource = {Binding Listing} /&gt;?如果是这样的话,如果内存服务的话,你真的需要为'selecteditem'公开一个公共属性。根据我对WPF的理解,Observable Collection的真正优势在于实时可以改变的方式,并且在实现INotifyPropertyChanged或INotifyCollectionChanged时您可以注意到这些更改。

<combobox x:Name="mycombo" itemssource="{Binding itemsource}" 
          selecteditem="{Binding SelectedItem}" />

ViewModel属性:

public string SelectedItem { get; set; }

但是,如果您希望在更改属性时注意到该属性,则需要实现INotifyPropertyChanged。通常情况下,在我工作的工作室中,他们在类的顶部设置一个私有变量,然后在get集中使用它,然后在绑定中使用public属性。

public class example : INotifyPropertyChanged
{
    private string _SelectedItem;


    public string SelectedItem 
    {
        get { return _SelectedItem; }
        set
        {
           _SelectedItem = value;

           RaisePropertyChanged("SelectedItem");
         }
    }

    public event PropertyChangedEventHandler PropertyChanged;

     protected void RaisePropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new   System.ComponentModel.PropertyChangedEventArgs(propertyName));
    }

    public void DoSomething()
    {
         Messagebox.Show("I selected: " + SelectedItem);
    }
}