【问题标题】:how to get the objects from an observable collection?如何从可观察集合中获取对象?
【发布时间】:2019-05-27 13:37:51
【问题描述】:

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

我在 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}"/>

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

    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 时,我只会得到真/假,而没有“Prise1”或“Prise2”。 你知道如何解决这个问题吗? 提前谢谢你

【问题讨论】:

  • 哎呀,我更正了
  • 您正在遍历所有 4 个WeekValues,不是吗?所以X 是第一次迭代中的 Prise1,依此类推。如果你从不改变元素的顺序,if (Prise2.Monday)可以写成if (allPrises[1].Monday)
  • 您应该在 foreach 中使用“x”,否则使用 foreach 有什么意义?
  • 谢谢mm8,现在可以了。谢谢你

标签: c# wpf mvvm observablecollection


【解决方案1】:

您正在遍历所有 4 个WeekValues。所以X 在第一次迭代中是Prise1,依此类推。

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

【讨论】:

    猜你喜欢
    • 2022-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    • 2018-12-16
    • 2021-12-28
    相关资源
    最近更新 更多