启动时未检查WPF CheckBox(数据绑定)

时间:2009-11-26 08:56:20

标签: c# wpf data-binding mvvm checkbox

我刚刚遇到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; }
    }
}

任何建议都值得赞赏,因为我花了太多时间调试这个并且我的想法已经用完了。

1 个答案:

答案 0 :(得分:2)

您提供的代码完全正确,初始化问题可能来自您分配DataContext的方式。我尝试了以下内容:

    public Window1()
    {
        DataContext = this;
        DisplayTypes = new ObservableCollection<TypeDisplayPair>()
        {
            new TypeDisplayPair("Alpha", true),
            new TypeDisplayPair("Beta", false)
        };

        InitializeComponent();
    }

它按预期工作。