【问题标题】:Master-Detail Binding主从绑定
【发布时间】:2013-06-07 09:00:20
【问题描述】:

我正在尝试在 Xaml 中实现简单的主细节数据绑定 C# WPF。在左侧我有一个正确生成的列表框,在右侧我有一个数据网格。当我单击左侧列表框时,我希望我的 Datagrid 相应更改。目前我相信我有 SelectedItem 路径的问题。谁能给个建议?

public class Pipe
{
    public string ID { get; set; } 

    public ObservableCollection<Node> nodes = new ObservableCollection<Node>(); 
}

public class Node
{
    public int ID { get; set; }
    public double Distance { get; set; }    
}

ObservableCollection<Pipe>  p = new ObservableCollection<Pipe>();

填充我的管道类后,我通过

绑定它
lstLines.DisplayMemberPath = "ID";
lstLines.ItemsSource = p;

到目前为止,一切正常。 接下来在 Xaml 中,我通过以下方式将我的数据网格绑定到 Listbox 的 SelectedItem:

ItemsSource="{Binding Path=SelectedItem.nodes, ElementName=lstLines, Converter={StaticResource debugConverter}}

这就是问题....我找不到正确的路径,所以我的数据网格是根据列表的选定项填充的。我尝试了几种变体,但没有任何不足。

【问题讨论】:

    标签: wpf xaml data-binding master-detail


    【解决方案1】:

    您的Path 很好,但您只能绑定public 属性,而您的nodes 是一个字段:

    public ObservableCollection<Node> nodes {get; set; }
    

    你可以在Pipe构造函数中初始化nodes,但它必须是一个属性

    【讨论】:

    • 我觉得自己好蠢 :) 我已将代码修改为: ObservableCollection _nodes = new ObservableCollection();公共 ObservableCollection 节点 { 获取 { 返回 _nodes; } }。而且效果很好
    猜你喜欢
    • 1970-01-01
    • 2016-12-14
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 2013-02-04
    • 2014-04-02
    相关资源
    最近更新 更多