2013-10-17 51 views
0

我不知道我是否足够丰富,但我遇到了问题。 我将一个ObservableCollection绑定到一个正常的Listbox,一切工作正常,但ImageInfo有一个成员(Source),它包含图像所在的位置,我需要Listbox中当前选定项目的Source成员。然而,我似乎没有线索从哪里开始。绑定到Listbox项目的成员

+1

问题现在还不清楚,请添加更多细节 –

+0

你的意思是说,你有ImageInfo类,它有源码属性,你想绑定它吗? –

+0

将SelectedItem绑定到ViewModel的属性。 –

回答

1

也许你需要在你的xaml如<Image Source="{Binding ElementName=myListbox, Path=SelectedItem.Source}">。与此处绑定相关的其他示例和解释https://stackoverflow.com/a/1069389/1606534

+0

谢谢,我只是不认为我可以使用“。”在“SelectedItem.Source”中访问成员 –

1

您是否正常绑定到属性,如:EG:< combobox itemssource = {绑定列表} />?如果是这样的话,如果记忆服务的话,你真的只需要有一个公共财产暴露给'selecteditem'。根据我对WPF的理解,Observable Collection中的实际功能是事情如何实时更改,并且在实现INotifyPropertyChanged或INotifyCollectionChanged时可以注意到这些更改。

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

视图模型属性:

public string SelectedItem { get; set; } 

但是如果你想要当它改变时,你需要执行INotifyPropertyChanged要注意你的财产。通常,在我工作的工作室中,他们在类的顶部设置了一个私有变量,然后在获取集中使用它,然后在绑定中使用公有属性。

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); 
    } 
} 
相关问题