c# - 如何更改 Observable Collection 元素中 Class 的属性?
问题描述
我有一个observable collection
,装满了Class properties
。我想在更改 a 时toggle button
更改恰好 1 个元素中的属性之一。
这是集合的样子:
private ObservableCollection<Item> ceilingItems = new ObservableCollection<Item>();
ceilingItems.Add(new Item() { Category = language.GetString("top-mesh"), Name = "4. " + language.GetString("main-direction"), Value1 = list1, Unit1 = "mm", Value2 = list2, Unit2 = "cm", IsEditable = true });
ceilingItems.Add(new Item() { Category = "", Name = "3. " + language.GetString("side-direction"), Value1 = list1, Unit1 = "mm", Value2 = list2, Unit2 = "cm", IsEditable = false });
ceilingItems.Add(new Item() { Category = language.GetString("bottom-mesh"), Name = "2. " + language.GetString("side-direction"), Value1 = list1, Unit1="mm", Value2 = list2, Unit2 = "cm", IsEditable = false });
ceilingItems.Add(new Item() { Category = "", Name = "1. " + language.GetString("main-direction"), Value1 = list1, Unit1 = "mm", Value2 = list2, Unit2 = "cm", IsEditable = true });
ceilingItems.Add(new Item() { Category = language.GetString("lace"), Name = "", Value1 = list1, Unit1 = "mm", Value2 = list2, Unit2 = "cm", IsEditable = true });
ceilingItems.Add(new Item() { Category = language.GetString("spacer-iron"), Name = "", Value1 = list1, Unit1="mm", Value2 = list3, Unit2 = language.GetString("piece") + " / m2", IsEditable = true });
Item
班级:
public class Item
{
public string Category { get; set; }
public string Name { get; set; }
public List<int> Value1 { get; set; }
public string Unit1 { get; set; }
public List<double> Value2 { get; set; }
public string Unit2 { get; set; }
public bool IsEditable { get; set; }
}
我有一个函数,我想以某种方式(单击按钮后)定义,IsEditable
应该2. element of the collection
更改为true
. 我不知道怎么做。
这是按钮的功能:
private void ToggleButton1_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e)
{
}
解决方案
访问该项目并设置其属性:
private void ToggleButton1_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e)
{
int index = 1; //second element
ceilingItems[index].IsEditable = true;
}
如果IsEditable
是数据绑定,则应INotifyPropertyChanged
在类中实现接口Item
以通知 UI 更改:
public class Item : INotifyPropertyChanged
{
public string Category { get; set; }
public string Name { get; set; }
public List<int> Value1 { get; set; }
public string Unit1 { get; set; }
public List<double> Value2 { get; set; }
public string Unit2 { get; set; }
private bool _isEditable;
public bool IsEditable
{
get { return _isEditable; }
set { _isEditable = value; NotifyPropertyChanged(); }
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
推荐阅读
- python - 尝试在 python 中使用 OpenCV 和 Tesseract 识别验证码,但准确度不高
- java - 如何在属性中将字体安装到 NetBeans?
- python - 计算链表节点
- python - 当我尝试将我的 numpy 数组保存到 .npy 文件时,出现内存错误。如何从内存有限的图像文件创建大型 .npy 文件?
- java - 如何在应用启动时验证用户购买非消耗性产品
- r - 如何在 R 中解析 lua 文件
- three.js - DeckGL 在海量点云数据可视化方面的表现如何?
- angular - 监听子组件中的更改变量
- mysql - 在 Google Cloud SQL 上更改 innodb_io_capacity
- ios - 如何在 iOS 中检查暗模式?