我不知道我是否会提供足够的信息,但我遇到了问题。我将 ObservableCollection 绑定到普通列表框,一切正常,但 ImageInfo 有一个成员(源),其中包含图像所在的位置,我需要列表框中当前选定项目的源成员。但是,我似乎不知道从哪里开始。
问问题
83 次
2 回答
1
也许您的 xaml 中需要类似<Image Source="{Binding ElementName=myListbox, Path=SelectedItem.Source}">
. 此处与绑定相关的其他示例和说明https://stackoverflow.com/a/1069389/1606534
于 2013-10-17T21:18:54.383 回答
1
您是否在正常模式下绑定到如下属性:EG: < combobox itemssource={Binding Listing}/>?如果是这样,您真的只需要为“selecteditem”公开一个公共属性(如果有记忆的话)。从我对 WPF 的理解来看,Observable Collection 的真正强大之处在于事物如何实时变化,并且您可以在实现 INotifyPropertyChanged 或 INotifyCollectionChanged 时注意到这些变化。
<combobox x:Name="mycombo" itemssource="{Binding itemsource}"
selecteditem="{Binding SelectedItem}" />
视图模型属性:
public string SelectedItem { get; set; }
但是,如果您希望您的属性在更改时被注意到,您需要实现 INotifyPropertyChanged。通常,在我工作过的工作室中,他们在类的顶部设置一个私有变量,然后在 get 集中使用它,然后在绑定中使用公共属性。
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);
}
}
于 2013-10-17T21:19:27.713 回答