我刚刚遇到CheckBox
数据绑定问题。场景是:
当我初始化用户界面(启动应用程序)时,CheckBox
es未被选中,尽管它们绑定的属性设置为true。单击CheckBox
时,该属性设置为false,但CheckBox
仍显示为未选中。从现在开始,数据绑定按预期工作,CheckBox
与绑定属性正确同步。
这是我的XAML代码:
<ItemsControl ItemsSource="{Binding Path=DisplayTypes}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type Presentation:TypeDisplayPair}">
<CheckBox IsChecked="{Binding Display}" Margin="3">
<TextBlock Text="{Binding Type}" Foreground="{Binding Color}" />
</CheckBox>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
我的观点模型:
public class TypeDisplayPair : BaseViewModel
{
private bool display;
private readonly Brush color;
public TypeDisplayPair(string type, bool display)
{
Display = display;
Type = type;
color = BrushGenerator.GetRandomSolidColorBrush();
}
public string Type { get; set; }
public bool Display
{
get { return display; }
set
{
display = value;
this.FirePropertyChanged(x => x.Display);
}
}
public Brush Color
{
get { return color; }
}
}
任何建议都值得赞赏,因为我花了太多时间调试这个并且我的想法已经用完了。
答案 0 :(得分:2)
您提供的代码完全正确,初始化问题可能来自您分配DataContext
的方式。我尝试了以下内容:
public Window1()
{
DataContext = this;
DisplayTypes = new ObservableCollection<TypeDisplayPair>()
{
new TypeDisplayPair("Alpha", true),
new TypeDisplayPair("Beta", false)
};
InitializeComponent();
}
它按预期工作。