我在尝试更新表面元素的组件时遇到了一些问题。我不知道我解决问题的方法是否错误,因为我是这个话题的新手。
我的观点如下图所示
根据在菜单中选择的选项,将不同的用户控件加载为 StackPanel 的唯一子项,但我遇到了从加载的用户控件更新 Listview 的问题,例如:当我保存新项目时,我需要为列表充值ListView 中的项目
MVVM 将是一个很好的模式。如果您在控件之间传递数据时遇到问题 - 为什么不在统一数据层之上引入它们呢?考虑一下:
菜单中的三个单选按钮,每个按钮的IsChecked
属性都绑定到Visibility
各自的属性UserControl
。
StackPanel
持有所有三个UserControls
ListView
绑定到 ViewModel 的List<Item>
您的每一个都UserControls
绑定到ListView.SelectedItem
:其中一个TextBlock
用于只读,一个TextBox
用于编辑。第三个将在您的List<Item>
. 您必须ItemTemplate
为每个创建或创建一个UserControl
(因为它们看起来非常相似)并使用DataTemplateSelector
.
如果您不熟悉 MVVM ,这里是一个好的开始。您还可以使用现有框架之一,例如MVVM Light
您可以为您的孩子创建一个事件
public delegate void HandleNAMEOFYOURHANDLEEVENT();
在你的孩子班上
public event HandleNAMEOFYOURHANDLEEVENT yourInstance;
在您的孩子课堂上使用它
if (!ReferenceEquals(yourInstance, null))
{
yourInstance();
}
并且您像其他事件一样向您的父母声明它。