C# 为什么可以';我在ObservableCollection中使用数组值进行绑定吗?
我想显示一些字节值及其二进制值。如下所示: 我的编码: 这是项目来源:C# 为什么可以';我在ObservableCollection中使用数组值进行绑定吗?,c#,arrays,binding,C#,Arrays,Binding,我想显示一些字节值及其二进制值。如下所示: 我的编码: 这是项目来源: public MainWindow() { InitializeComponent(); ObservableCollection<MyRegs> regs = new ObservableCollection<MyRegs>() { new MyRegs(0x12), new MyRegs(0x
public MainWindow()
{
InitializeComponent();
ObservableCollection<MyRegs> regs = new ObservableCollection<MyRegs>()
{
new MyRegs(0x12),
new MyRegs(0x23),
new MyRegs(0x34)
};
RegsList.ItemsSource = regs;
}
public class MyRegs
{
public MyRegs(byte val)
{
this.RegValue = val;
this.Bits = new bool[] { true, false, true, false, true, false, true, false };
}
private byte regValue;
public byte RegValue
{
get { return regValue; }
set
{
regValue = value;
}
}
private bool[] bits;
public bool[] Bits
{
get
{
return bits;
}
set
{
bits = value;
}
}
}
Xaml:顺便问一下,我可以使用模板获取这些复选框吗
<Grid>
<ListView x:Name="RegsList">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBox Text="{Binding Path=RegValue,Mode=TwoWay, Converter={StaticResource sResource1}}" HorizontalAlignment="Left" TextWrapping="Wrap"/>
<CheckBox IsChecked="{Binding Path=Bits[7],Mode=TwoWay}"/>
<CheckBox IsChecked="{Binding Path=Bits[6],Mode=TwoWay}"/>
<CheckBox IsChecked="{Binding Path=Bits[5],Mode=TwoWay}"/>
<CheckBox IsChecked="{Binding Path=Bits[4],Mode=TwoWay}"/>
<CheckBox IsChecked="{Binding Path=Bits[3],Mode=TwoWay}"/>
<CheckBox IsChecked="{Binding Path=Bits[2],Mode=TwoWay}"/>
<CheckBox IsChecked="{Binding Path=Bits[1],Mode=TwoWay}"/>
<CheckBox IsChecked="{Binding Path=Bits[0],Mode=TwoWay}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
但当我选中复选框时,它不会设置位值。为什么??
我使用了ObservableCollection,它也不起作用
如果我使用bool type而不是bool[]type,它会工作。首先,您的
MyRegs
类没有实现INotifyPropertyChanged,因此您的UI元素无法知道值何时发生更改。必须在类上实现该接口,并在相应的setter中调用notifyPropertyChanged
其次,ObservableCollection仅在向集合中添加或删除项时发送更新通知,而不是在更新项的属性时发送更新通知。首先,您的
MyRegs
类没有实现INotifyPropertyChanged,因此您的UI元素无法知道值何时发生更改。必须在类上实现该接口,并在相应的setter中调用notifyPropertyChanged
其次,ObservableCollection仅在向集合中添加项或从集合中删除项时发送更新通知,而不是在更新项的属性时发送更新通知。绑定列表可以同时执行这两项操作,inser/delete和modify notificationsBindingList是为WinForms设计的,WPF不适当支持。请参阅:首先,我认为NotifyPropertyChanged与Set访问器无关。事实上,在编辑文本框时可以设置RegValue。其次,ObservableCollection仅在集合中添加或删除项目时发送更新通知,当项目的属性被更新时就不会了。----我同意。回到我的问题,当我检查那些复选框时,它不会转到Setter。如何解释这一点,可能绑定不起作用。我如何修复它。绑定列表两者都可以,inser/delete and modify notificationsBindingList是为WinForms设计的,WPF不支持它。请参阅:首先,我认为NotifyPropertyChanged与Set访问器无关。事实上,在编辑文本框时可以设置RegValue。其次,ObservableCollection仅在集合中添加或删除项目时发送更新通知,当项目的属性被更新时不会。----我同意。回到我的问题,当我检查那些复选框时,它不会转到Setter。如何解释这一点,可能绑定不起作用。我如何修复它。