sách gpt4 ai đã đi

c# - 为 ItemsControl 的每一项创建一个 ViewModel

In lại 作者:行者123 更新时间:2023-12-03 10:27:45 33 4
mua khóa gpt4 Nike

我定义了一个类型 董事会 其中包含公共(public)属性(property)

ObservableCollection Columns

我想使用 MVVM 模式来显示它。
我创建了 看板并将其绑定(bind)到 BoardViewModel . BoardViewModel 公开公共(public)属性 董事会 板型。
BoardView 包含一个控件 ItemsControl,它设置 ItemsSource={Binding Board.Columns}。









BoardColumnView 应该显示 的属性专栏 类型,这很好用。
我的问题是我想为 BoardColumn 创建一个 ViewModel,而不是只显示 Column 类型的属性,我想显示 BoardColumnViewModel 这将在 中定义专栏 属性(property)。
Tôi có thể làm điều này bằng cách nào?
Cảm ơn trước nhé!

1 Câu trả lời

你可以简单地定义一个 ColumnsCủa bạn BoardViewModel 中的属性(property)将包含 BoardColumnViewModel 的集合.像这样的东西:

public ObservableCollection Columns { get; private set; }

您需要在 BoardViewModel 中的某处初始化此属性。 , 例如:
public BoardViewModel(...)
{
...
Columns = new ObservableCollection(Board.Columns.Select(c => new BoardColumnViewModel(c)));
}

然后绑定(bind)到该属性,而不是 Board.Columns :










作为 MVVM 的一般原则,不建议直接绑定(bind)到模型。相反,您应该始终尝试绑定(bind)到 View 模型。这就是您遇到所描述问题的原因 - 因为您绑定(bind)到公共(public)属性 Board ,这是你的模型。

关于c# - 为 ItemsControl 的每一项创建一个 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31526675/

33 4 0
Bài viết được đề xuất: multithreading - 代码重入与线程安全
Bài viết được đề xuất: javascript - jQuery:如何正确暂停递归?
Bài viết được đề xuất: Triển khai OpenVG?
Bài viết được đề xuất: javascript - 如何在按键时从键盘触发事件?
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com