【发布时间】:2012-08-11 01:42:36
【问题描述】:
我有一个 ObservableCollection<MyEntity> 和 MyEntity 有一个带有 PropertyChanged 事件的 IsChecked 属性。
我有一个Button,我想在选中MyObservableCollection 中的至少一个MyEntity 时将IsEnabled 属性更改为true。
我创建了一个转换器,它接受ObservableCollection 并在至少检查MyEntity 时返回true。
但是return "null" 被返回。
怎么了 ?感谢您的帮助。
XAML
<Window.Resources>
<CollectionViewSource x:Key="MyObservableCollection"/>
<src:MyConverter x:Key="MyConverter"/>
</Window.Resources>
<Button IsEnabled="{Binding Converter={StaticResource MyConverter}, Source={StaticResource MyObservableCollection}}"/>
C# 转换器
class MyConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (null == value)
return "null";
ReadOnlyObservableCollection<object> items = (ReadOnlyObservableCollection<object>)value;
List<MyEntity> myEntities = (from i in items select (MyEntity)i).ToList();
foreach (MyEntity entity in myEntities)
{
if (entity.IsChecked)
{
return true;
}
}
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new System.NotImplementedException();
}
}
【问题讨论】:
-
你在哪里添加数据到这个集合
MyObservableCollection? -
value对象是否为空?如果是这样,您的来源只是空,您实际上在哪里填充CollectionViewSource? -
CollectionViewSource填充在WindowConstructor中,并显示在DataGrid中,效果很好。 -
@Anthony:尝试在 InitializeComponent() 调用之前填充它
-
@dwrd 是而且DataGrid不为空
标签: wpf button binding converter isenabled