usercontrol中itemsControl的WPF数据绑定问题
我有两个类和一个usercontrolusercontrol中itemsControl的WPF数据绑定问题,wpf,data-binding,user-controls,itemscontrol,Wpf,Data Binding,User Controls,Itemscontrol,我有两个类和一个usercontrol class pvalue { public string value; public bool selected; public pvalue(string v, bool s) { value = v; selected = s; } } class param { public string name { get; set; } public string pre
class pvalue
{
public string value;
public bool selected;
public pvalue(string v, bool s)
{
value = v;
selected = s;
}
}
class param
{
public string name { get; set; }
public string prefix { get; set; }
public IList<pvalue> values { get; set; }
public param(string _name, string _prefix, IList<pvalue> _values)
{
name = _name;
prefix = _prefix;
values = _values;
}
}
<UserControl DataContext="{Binding param}" >
<Grid>...
<ItemsControl x:Name="itemctl" ItemsSource="{Binding Path=values}">
...
<ItemsControl.ItemTemplate>
<DataTemplate>
<ToggleButton IsChecked="{Binding Path=selected}">
<TextBlock Text="{Binding Path=value}" />
</ToggleButton>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</UserControl>
类pvalue
{
公共字符串值;
选择公共图书馆;
公共pvalue(字符串v,布尔值s)
{
值=v;
所选=s;
}
}
类参数
{
公共字符串名称{get;set;}
公共字符串前缀{get;set;}
公共IList值{get;set;}
公共参数(字符串名称、字符串前缀、IList值)
{
名称=_名称;
前缀=_前缀;
值=_值;
}
}
...
...
我的目的是在应用程序中创建类,并将其设置为usercontrol的datacontext。但我是WPF的新手,这有点让我不知所措。数据绑定不起作用-“BindingExpression路径错误:“在对象”“pvalue”“上找不到值”属性
我可以得到一些帮助来整理usercontrol的数据绑定吗?非常感谢。这里似乎有一些地方不对劲:
- 您应该绑定到属性(使用getter和setter)而不是字段,因此将公共字段更改为pvalue类型上的属性李>
- 如果希望UI在这些属性值更改时更新,请研究在pvalue和param类型上实现
INotifyPropertyChanged
- 我会用PascalCase作为你的类名和属性
- 从参数名称中删除下划线
- 使pvalue参数名称更具描述性
- 您正在将UserControl的DataContext绑定到类似于类型名(param)的对象,您打算如何让UserControl获取您的param类型的实例?通常,您可以将其作为usercontrol的dependency属性来执行,然后在使用该控件时,可以将usercontrol的Param dependency属性绑定到在当前DataContext上返回Param类型实例的属性(如果使用MVVM,通常是ViewModel)
然后修改代码,如下所示
...
谢谢,要点很好。在我修复了类pvalue的属性声明之后,测试用例实际上正在工作。