【问题标题】:Getting item from Observable Collection or List()从 Observable Collection 或 List() 中获取项目
【发布时间】:2012-09-14 10:18:32
【问题描述】:

我有一个名为 NotesList 的列表框。我有一个名为 noteList 的 ObservableCollection,还有一个名为 NoteContents 的 TextBox。

在我的 ObservableCollection 中,我为一些项目设置了 Filename 和 Contents 属性,然后将其添加(绑定)到我的 ListBox。

但是现在,我想(当我单击一个按钮时)显示在 NoteContents 文本框中选择的 ListBox 项的“内容”。

我该怎么做?

我目前有:

private void NotesList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    NoteContents.Text = noteList.Where(x => x.Filename.Contains(NotesList.SelectedValue.ToString())).FirstOrDefault().Contents;
}

【问题讨论】:

  • 在 ButtonClick 上还是在 SelectionChanged 上?
  • 请显示集合中的内容,以及 XAML。
  • 您现有的代码是否不起作用,或者您是否需要更好的解决方案?如果 ObservableCollection 中的对象实现 INotifyPropertyChanged,则可以在将 UpdateSourceTrigger 设置为 Explicit 的情况下进行绑定。然后,这将允许您在按钮单击处理程序/ICommand 中手动强制绑定更新。

标签: c# wpf xaml data-binding microsoft-metro


【解决方案1】:

您可以在不点击按钮的情况下执行此操作,只需绑定如下:

<ListBox Name="NotesList" ItemsSource="{Binding YourObservableCollection}">
    <!--Your bindings here-->
</ListBox>
<TextBox Text="{Binding ElementName=NotesList, Path=SelectedItem.Contents}" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 2014-08-27
    相关资源
    最近更新 更多