如何将4个复选框绑定到具有4个bool属性的对象中

时间:2015-10-20 12:19:07

标签: wpf binding

我有这堂课:

public static class MyData
{
    public static bool val1 { get; set; }
    public static bool val2 { get; set; }
    public static bool val3 { get; set; }
    public static bool val4 { get; set; }
    public static bool val5 { get; set; }
}

我的这个数组有相同的变量名称:

string[] arr;

arr[0] = val1;
arr[1] = val2;
arr[2] = val3;
arr[3] = val4;
arr[4] = val5;

我的Check Boxs

<StackPanel>
    <CheckBox
        Name="cbval1"
        FontSize="14"
        Foreground="Black"
        Margin="0,0,0,0"/>
    <CheckBox
        Name="cbval2"
        FontSize="14"
        Foreground="Black"
        Margin="0,0,0,0"/>
    <CheckBox
        Name="cbval3"
        FontSize="14"
        Foreground="Black"
        Margin="0,0,0,0"/>
    <CheckBox
        Name="cbval4"
        FontSize="14"
        Foreground="Black"
        Margin="0,0,0,0"/>
    <CheckBox
        Name="cbval5"
        FontSize="14"
        Foreground="Black"
        Margin="0,0,0,0"/>
</StackPanel>

因此,当我的应用程序启动时,我会阅读一些文件,然后我将string[]包含所有这些值,我希望根据这些值select/unselect我的复选框。

有什么想法吗?

或许我可以用其他方式绑定它。

1 个答案:

答案 0 :(得分:0)

这是该绑定的MVVM版本。  1. Xaml代码:

<ListBox ItemsSource="{Binding CheckBoxDataModels}">
<ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate DataType="{x:Type soCheckBoxsListboxHelpAttempt:CheckBoxDataModel}">
                    <CheckBox 
                        Name="cbval2"
                        Content="{Binding Title, Mode=Default, UpdateSourceTrigger=PropertyChanged}"
                        IsChecked="{Binding IsItChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                        FontSize="14"
                        Foreground="Black"
                        Margin="0,0,0,0"/>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ListBox.ItemContainerStyle>

 2.查看型号代码:

    public ObservableCollection<CheckBoxDataModel> CheckBoxDataModels { get; set; }

3。型号代码:

    public bool IsItChecked
    {
        get { return _isItChecked; }
        set
        {
            _isItChecked = value;
            OnPropertyChanged();
        }
    }

    public string Title
    {
        get { return _title; }
        set
        {
            _title = value;
            OnPropertyChanged();
        }
    }

4。查看模型初始化:

private void InitDataContext()
    {
        DataContext = new MainViewModel
        {
            CheckBoxDataModels = new ObservableCollection<CheckBoxDataModel>(new List<CheckBoxDataModel>
            {
                new CheckBoxDataModel
                {
                    IsItChecked = true,
                    Title = "first"
                },
                new CheckBoxDataModel
                {
                    IsItChecked = false,
                    Title = "second"
                },
                new CheckBoxDataModel
                {
                    IsItChecked = true,
                    Title = "third"
                },
                new CheckBoxDataModel
                {
                    IsItChecked = false,
                    Title = "first"
                }
            })
        };
    }
  1. 它看起来如何: enter image description here

    的问候,