我有一个带有布尔列的网格。我试图与anothoer复选框控件关联,这样当我选中此复选框时,我的窗口显示一个来自网格的元素,其中布尔列为true(已选中)。
这是我的IsChecked属性
private bool _isChecked;
public bool IsChecked
{
set
{
_isChecked = value;
InitializeMappedElements();
}
get { return _isChecked; }
}
这是一种仅从网格中选择映射元素的方法 public ObservableCollection MappedList { get {return _mappedList; } 设置{_mappedList = value; } }
private ObservableCollection<MessageFieldViewModel> _mappedList = new ObservableCollection<MessageFieldViewModel>();
private void InitializeMappedElements()
{
if (_isChecked)
{
var transactionRuleList =
MessageFieldVModel.GetAllMessageField().Where(ame => ame.IsMapped == _isChecked);
_mappedList = new ObservableCollection<MessageFieldViewModel>(transactionRuleList);
messageFields = _mappedList;
NotifyPropertyChanged("MessageFields");
}
}
在选择
上与网格关联 public ObservableCollection<MessageFieldViewModel> MessageFields
{
set
{
if (_isChecked)
{
InitializeMappedElements();
}
NotifyPropertyChanged("MessageField");
}
get { return messageFields; }
}
XAML
<CheckBox Foreground="WhiteSmoke" Content="Display only Mapped Fields" HorizontalAlignment="Center"
Margin="198,35,473,74" FontFamily="Trebuchet MS" FontWeight="Bold" Grid.Column="1"
IsChecked="{Binding Path= IsChecked,Mode=TwoWay}">
</CheckBox>
当我选择什么都没有显示。为什么这不起作用?谢谢。
答案 0 :(得分:0)
你的逻辑很难遵循,而且更难维护。不要直接设置支持字段,而是使用MessageFields
属性并正常设置setter中的支持字段。
尽管如此,您应该考虑使用CollectionViewSource,因为这听起来只是视图的一个问题。