如何绑定到WPF中的Observable集合中的列表

时间:2015-07-30 04:29:24

标签: c# wpf data-binding wpfdatagrid

我有一个类,它有2个公共变量,一个字符串和一个自定义类的列表。

我已经设置了Binding,它对字符串很有用,但是我无法将其绑定到List。

背后的代码

public class RegKey
{
    public string Name { get; set; }
    public List<CEKeys> Key = new List<CEKeys>();
}

public class CEKeys
{
    public string Path { get; set; }
    public string KeyName { get; set; }
    public string Value { get; set; }
    public string Type { get; set; }
}

XAML

<DataGrid x:Name="dgRegKeys" Margin="0,0,0,40" ItemsSource="{Binding}" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Foreground="Black" Width="60" Header="Name" Binding="{Binding Name, Mode=TwoWay}" IsReadOnly="True" />
        <DataGridTextColumn Foreground="Black" Width="140" Header="Value"  Binding="{Binding Path=Key.Value, Mode=TwoWay}" IsReadOnly="False"/>
        <DataGridTextColumn Foreground="Black" Width="140" Header="Type"  Binding="{Binding Path=Key.Value, Mode=TwoWay}" IsReadOnly="True"/>
    </DataGrid.Columns>
</DataGrid>

如何在使Value值可编辑时绑定到CEKeys列表?一旦确认了值,我将创建列出的密钥。

在键入此内容时,我遇到了第二个问题。每个regkey都有一个键列表。这是因为RegKey可能需要设置多个键才能正常工作。如何显示列表中的所有键?

2 个答案:

答案 0 :(得分:0)

列表是一个字段而不是属性,您只能绑定到属性,您需要使用:

public class RegKey
{
   public string Name { get; set; }
   public List<CEKeys> Key { get; set; }

   public RegKey()
   {
        Key = new List<CEKeys>();
   }
}

答案 1 :(得分:0)

如果您想将其添加到列表中,您可以非常轻松地执行此操作:

public class RegKey
    {
        public string Name { get; set; }
        public List<CEKeys> Key = new List<CEKeys>();
        Dictionary<string, List<CEKeys>> dictionary = new Dictionary<string, List<CEKeys>>();
        public RegKey()
        {
            Key = new List<CEKeys>();

            dictionary.Add(Name, Key);
        }

    }