列表视图之间的WPF许多绑定

时间:2011-03-25 08:04:52

标签: wpf entity-framework xaml data-binding

我有两个列表视图,一个用于图像,一个用于标签,它们有很多关系。

两个列表视图都绑定到EF对象的ObservableCollection。标签列表视图还有一个复选框列。

当我从列表视图中选择一个图像时,我希望在另一个列表视图中检查相关的标签。我需要TwoWay绑定来创建和删除基于被检查的关系。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

在您的VM中,您有两个ObservableCollection的所有图像和标签...我认为您可以使用其他两个ObservableCollection关联的图像或标签,当您选择图像时,您可以使用此ObservableCollection绑定关联的标签,反之亦然。

您可以将关联项与所选项绑定的其他解决方案(“SelectedItems = {Binding Path = SelectedItem.Tags,ElementName = MyImageListBox}”或类似内容。

答案 1 :(得分:0)

我的工作原理如下:

  • 我已将我的Tag模型扩展为具有MatchesImage布尔属性
  • 我已将listviewitem twoway中的复选框绑定到此属性
  • getter获取CurrentImage并返回CurrentImage.Tags.Contains(this)
  • 当我更改属性设置器中的复选框时,我从我的viewmodel检索CurrentImage(我的viewmodels是全局资源),并根据值添加/删除标签集合中的标签
  • 我可能会将CurrentImage更改为可通过数据存储库访问,而不是viewmodel

有些事情:

public partial class Tag : INotifyPropertyChanged

  public bool MatchesImage {
    get
    {
        Image img = DataRepository.CurrentImage;
        return (img != null) ? this.Images.Contains(img) : false;
    }
    set
    {
        Image img = DataRepository.CurrentImage;
        if (img != null)
        {
            if (value)
                img.Tags.Add(this);
            else
                img.Tags.Remove(this);
            OnPropertyChanged("MatchesImage");
        }
    }
  }
}