当前位置: 首页 > 知识库问答 >
问题:

可以使用for/while循环创建MVVM属性吗?[已关闭]

楚知
2023-03-14

想改进这个问题吗 通过编辑此帖子,添加详细信息并澄清问题。

可以使用for/while循环创建MVVM属性吗?我应该把线圈放在哪里?在构造函数中,或者其他方法是否有效?我将使用其他属性或构造函数参数作为计数器。

我正在使用WPF 4.0

是否可以创建包含可观察集合的列表或数组

喜欢

List<ObservableCollection<string> {get;set;} lt= new List<ObservableCollection<string> {get;set;}();

我正在尝试在不创建类的情况下执行以下操作。

public class CustomerListList : List<CustomerList> { }  

public class CustomerList : List<Customer> { }

public class Customer
{
   public int ID { get; set; }
   public string SomethingWithText { get; set; }
}

我在“诗人”对以下问题的回答中找到了上述代码。在C#中创建列表

共有2个答案

吴宏扬
2023-03-14

嗯,在视图模型中编写它的最通用方法是使用可观察集合(ObservableCollection)

因此,在构造函数中创建初始列表,并在需要的地方简单地填充它。ObservableCollection的独特特性是,当某些内容发生变化时,它会通知UI。

您可能遇到的唯一问题是,当您更改最里面的对象时,UI中不会刷新任何内容,因为只有可观察的集合在更新时才会发出通知。实际解决这一问题的正确方法是使用以下结构:

public class Customer : INotifyPropertyChanged
{
    private int _id;
    private string _somethingWithText;

    public int ID
    {
        get { return _id;}
        set
        {
            _id = value;
            OnPropertyChanged();
        }
    }

    public string SomethingWithText
    {
        get { return _somethingWithText; }
        set
        {
            _somethingWithText = value;
            OnPropertyChanged();
        }
    }

    public PropertyChangedEventHandler PropertyChanged;
    protected OnPropertyChanged([CallerMemberName] string propertyName = "")
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
}

你在其他课堂上使用它,比如:

public class MainViewModel
{
    public ObservableCollection<ObservableCollection<Customer>> Customers { get; set; }

    public MainViewModel()
    {
        Customers = new ObservableCollection<ObservableCollection<Customer>>();
    }
}

无论何时你想要或需要,只需在该系列中添加内容。

谈琦
2023-03-14

我不知道你在问什么。如果你的意思是是否可以创建一个类型为字符串的列表,那么是的:

List<ObservableCollection<string>> list;

可以通过for循环将项目添加到此列表中吗?当然:

for (var i = 0; i < 99; i++) {
    list.Add(new ObservableCollection<string> { "1", "2", "hi" });
}
 类似资料:
  • 问题内容: 如何从while循环中创建sql server cte 这样的循环 问题答案: 如果需要表: 如果您需要一个字符串:

  • 我们经常需要重复执行一些操作。 例如,我们需要将列表中的商品逐个输出,或者运行相同的代码将数字 1 到 10 逐个输出。 循环 是一种重复运行同一代码的方法。 “while” 循环 while 循环的语法如下: while (condition) { // 代码 // 所谓的“循环体” } 当 condition 为真时,执行循环体的 code。 例如,以下将循环输出当 i < 3 时的

  • 问题内容: 我想知道是否可以使用或嵌套调用: 这是一个例子: 我放了两个s来显示我用来检索JSON的评论的ID。我收到第一个警报的ID,然后是第二个的“测试”,但没有显示第三个警报。为什么不? 这是JSON的示例: 问题答案: 问题: 不要在循环内创建函数 … 函数的每次调用实际上都引用内存中的相同副本。每次for循环运行时都会创建一个新的闭包,但是每个闭包都捕获相同的环境。因此,对(异步函数)的

  • 问题内容: 我也在学习Java和android。我们可以在while循环中执行的几乎所有事情都可以在while循环中执行。 我发现一个简单的条件,使用while循环比for循环更好 如果我必须在程序中使用counter的值,那么我认为while循环要比for循环好 使用while循环 在这种情况下,我发现while循环要比for循环好,因为如果要在for循环中实现相同的效果,则必须将counter

  • 问题内容: 我正在尝试使用for循环和嵌套for循环制作圣诞树。为了做到这一点,我需要能够用*做一个金字塔。我已经尝试了无数次,但在制作时遇到了问题。这是我的代码: 我想做的是: 问题答案: 试试这个简单得多的代码: 它使用3个循环: 第一个表示行数, 第二个用于打印空间, 第三个用于打印星号。

  • 主要内容:while语句的实现,for语句Erlang是一个函数式编程语言,是需要记住所有函数的编程语言,它们不提供任何的循环结构。而函数式编程取决于一个概念叫做递归。 while语句的实现 由于在 Erlang 中没有可直接使用的 while 语句,就必须使用递归技术在 Erlang 中来实现 while 语句。 我们将努力遵循 while 循环的实现,如在其他编程语言中一样。以下是遵守一个流程: 让我们来看看如何使用递归来在 Erla