如何从可观察集合中获取对象?

how to get the objects from an observable collection?

我不知道这是否可行,但我想将对象添加到可观察集合中并在以后重用它们。

我在 wpf 中有这个:

 <CheckBox Margin="0,9,0,5" IsChecked="{Binding Prise1.Monday, Mode=TwoWay}"/>
 <CheckBox Margin="0,10,0,5" IsChecked="{Binding Prise2.Monday, Mode=TwoWay}"/>
 <CheckBox Margin="0,10,0,5" IsChecked="{Binding Prise3.Monday, Mode=TwoWay}"/>
 <CheckBox Margin="0,9,0,0" IsChecked="{Binding Durée.Monday, Mode=TwoWay}"/>

一周中的所有日子。 Class 周值:

    private bool _Monday;
    public bool Monday
    {
        get
        {
            return _Monday;
        }
        set
        {
            _Monday = value;
            RaisePropertyChanged(nameof(Monday));
        }
    }
    private bool _Tuesday;
    public bool Tuesday
    {
        get
        {
            return _Tuesday;
        }
        set
        {
            _Tuesday = value;
            RaisePropertyChanged(nameof(Tuesday));
        }
    }
    private bool _Wednesday;
    public bool Wednesday
    {
        get
        {
            return _Wednesday;
        }
        set
        {
            _Wednesday = value;
            RaisePropertyChanged(nameof(Wednesday));
        }
    }
    private bool _Thursday;
    public bool Thursday
    {
        get
        {
            return _Thursday;
        }
        set
        {
            _Thursday = value;
            RaisePropertyChanged(nameof(Thursday));
        }
    }
    private bool _Friday;
    public bool Friday
    {
        get
        {
            return _Friday;
        }
        set
        {
            _Friday = value;
            RaisePropertyChanged(nameof(Friday));
        }
    }
    private bool _Saturday;
    public bool Saturday
    {
        get
        {
            return _Saturday;
        }
        set
        {
            _Saturday = value;
            RaisePropertyChanged(nameof(Saturday));
        }
    }
    private bool _Sunday;
    public bool Sunday
    {
        get
        {
            return _Sunday;
        }
        set
        {
            _Sunday = value;
            RaisePropertyChanged(nameof(Sunday));
        }
    }
}

我想做这样的事情:

   public ObservableCollection<WeekValues> allPrises = new ObservableCollection<WeekValues>();

   Prise1 = new WeekValues();
   Prise2 = new WeekValues();
   Prise3 = new WeekValues();
   Durée = new WeekValues();

   allPrises.Add(Prise1);
   allPrises.Add(Prise2);
   allPrises.Add(Prise3);
   allPrises.Add(Durée);

并使用如下方法:

MyMethod(allPrises)
{
    foreach(var X in allPrises)
       {
           if(Prise1.Monday) ...do something
           if(Prise2.Monday) ... do something else
       }

看清楚了吗? 这就是我的想法,我想知道如何进行,因为当我制作一个 foreach 时,我只会得到 true/fals,而没有 "Prise1" 或 "Prise2"。 你知道如何解决这个问题吗? 提前谢谢你

您正在遍历全部 4 WeekValues。所以 X 在第一次迭代中是 Prise1 等等。

if (Prise2.Monday) 可以写成 if (allPrises[1].Monday) 如果你从不改变元素的顺序。