如何在WPF中绑定到一个可观察集合中的列表
本文关键字:一个 观察 集合 列表 WPF 绑定 | 更新日期: 2023-09-27 18:05:41
我有一个类,它有两个公共变量一个字符串和一个自定义类的列表。
我已经设置了绑定,它对字符串很有效,但我不能让它绑定到列表。
背后的代码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>
如何绑定到CEKeys列表,同时使值可编辑?一旦值被确认,我将创建列出的键。
在输入这个的时候,我遇到了第二个问题。每个regkey都有一个List of Keys。这是因为RegKey可能需要设置多个密钥才能正常工作。如何显示列表中的所有键?
列表是一个字段而不是属性,你只能绑定属性,你需要使用:
public class RegKey
{
public string Name { get; set; }
public List<CEKeys> Key { get; set; }
public RegKey()
{
Key = new List<CEKeys>();
}
}
如果你想把这个添加到列表中,你可以很容易地做到:
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);
}
}