WPF数组与复选框的两种方式绑定

时间:2019-04-21 07:39:44

标签: c# wpf

我试图在WPF中创建一个复选框数组,这些复选框绑定到ViewModel中的数组。 创建复选框列表可以正常工作。 显示一行16个复选框,并按照下面的测试代码正确设置了它们的初始状态。

但是,我不知道如何绑定回视图模型。

我知道问题出在设置复选框绑定,但是我无法计算出要绑定的对象。 这是代码:

                        <ItemsControl ItemsSource="{Binding Path=Patterns1}">
                            <ItemsControl.ItemsPanel>
                                <ItemsPanelTemplate>
                                    <StackPanel Orientation="Horizontal"/>
                                </ItemsPanelTemplate>
                            </ItemsControl.ItemsPanel>
                            <ItemsControl.ItemTemplate>
                                <DataTemplate>
                                    <CheckBox IsChecked="{Binding Path=.}"/>
                                </DataTemplate>
                            </ItemsControl.ItemTemplate>
                        </ItemsControl>

ViewModel(这只是暂时填充数组)

using System.Collections.ObjectModel;
using System.Diagnostics;

namespace Test
{
    public class MyViewModel
    {
        public virtual ObservableCollection<bool> Patterns1 { get; set; }
        public virtual ObservableCollection<bool> Patterns2 { get; set; }
        public virtual ObservableCollection<bool> Patterns3 { get; set; }
        public virtual ObservableCollection<bool> Patterns4 { get; set; }
        public virtual ObservableCollection<bool> Patterns5 { get; set; }

        public virtual string Percentage1{ get; set; }

        public MyViewModel()
        {
            Patterns1 = new ObservableCollection<bool>();
            Patterns2 = new ObservableCollection<bool>();
            Patterns3 = new ObservableCollection<bool>();
            Patterns4 = new ObservableCollection<bool>();
            Patterns5 = new ObservableCollection<bool>();

            bool tempBool = true;
            for(int i = 0; i < 16; i++)
            {
                Patterns1.Add(tempBool);
                Patterns2.Add(!tempBool);
                Patterns3.Add(tempBool);
                Patterns4.Add(!tempBool);
                Patterns5.Add(tempBool);

                tempBool = !tempBool;
            }
        }

        protected void OnPatterns1Changed()
        {
            Percentage1 = string.Format("Time is {0:HH:mm:ss} ", DateTime.Now);
        }
    }
}

我知道问题出在这里

<CheckBox IsChecked="{Binding Path=.}"/>

如何将其绑定回ViewModel?

谢谢

0 个答案:

没有答案