c# - 如果集合项的属性发生更改,则 WPF 调用转换器
问题描述
使用PropertyChanged.Fody。我有一个 ObservableCollection 填充了自定义类项。它们每个都有一个属性 IsTableSelected。
如果集合中的至少一个项目的属性 IsTableSelected 设置为 true,我希望启用一个按钮。问题是:我的 Converter 将集合作为一个值,如果集合中的项目更改了它们的属性,则不会调用它。
这是我的 XAML:
<Button
Grid.Row="1"
Content="Connect"
Margin="5"
IsEnabled="{Binding Tables, Converter={StaticResource selectedItemsToBoolConverter}}"
/>
这是项目类:
public class ListBoxItemModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged = (sender, e) => { };
public bool IsTableSelected
{
get;
set;
}
public string Name
{
get;
set;
}
}
这是转换器:
class SelectedItemsToBoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
ObservableCollection<ListBoxItemModel> collection = value as ObservableCollection<ListBoxItemModel>;
if (collection.Count > 0)
{
if (collection.Where(item => item.IsTableSelected == true).ToList().Count > 0)
{
return true;
}
else
{
return false;
}
}
else return false;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
以防万一来自 ViewModel 的一行:
public ObservableCollection<ListBoxItemModel> Tables { get; set; }
= new ObservableCollection<ListBoxItemModel>();
任何使用 MVVM 的方式都会有所帮助。
解决方案
推荐阅读
- jmeter - 具有 xml 数据的 jtl 报告无法在 jmeter 中创建 html
- javascript - 如何进行正确的搜索查询以在 firebase 上的数组中查找对象 - firestore
- r - rShiny 中的空白 ggplot 图故障排除
- mysql - LEFT JOIN 未返回正确的结果集
- javascript - 通过 DOM 元素的 Javascript 循环对于异步脚本是不可靠的
- javascript - Jquery将变量中的数据插入动态输入
- javascript - 列表中的每个孩子都应该有一个唯一的“关键”道具控制台警告
- .net - 以编程方式更新 ClickOnce 部署 (VSTO) 然后导致 ApplicationDeployment.IsNetworkDeployed = False
- julia - Julia 中缺失、无、undef 和 NaN 的用法和约定差异
- python - imwrite OpenCV 不在 ec2 实例中写入图像