从另一个控件子级更新控件

时间:2012-04-27 05:55:08

标签: c# xaml

我在尝试更新表面元素的组件时遇到了一些问题。我不知道我对这个问题的处理方法是否错误,因为我是这个主题的新手。

我的观点由下图表示

enter image description here

根据菜单中选择的选项,将不同的用户控件加载为StackPanel的唯一子项,但是我要解决从加载的用户控件更新Listview的问题,例如:当我保存新项目时我需要充值ListView中的项目列表

2 个答案:

答案 0 :(得分:1)

MVVM在这里将是一个很好的模式。如果在控件之间传递数据时出现问题 - 为什么不在统一数据层之上引入它们?考虑一下:

您的菜单中有三个单选按钮,每个单独的IsChecked属性绑定到您各自Visibility的{​​{1}}属性。

UserControl持有所有三个StackPanel

UserControls绑定到ViewModel的ListView

您的每个List<Item>都绑定到UserControls:其中一个使用ListView.SelectedItem进行只读,一个使用TextBlock进行编辑。第三个会在TextBox中创建新项目。您必须为每个List<Item>创建ItemTemplate或创建一个UserControl(因为它们看起来非常相似)并使用DataTemplateSelector

如果你不熟悉MVVM here是一个好的开始。您还可以使用其中一个现有框架,例如MVVM Light

答案 1 :(得分:0)

您可以为您的孩子创建一个活动

public delegate void HandleNAMEOFYOURHANDLEEVENT();

在你的孩子班上

public event HandleNAMEOFYOURHANDLEEVENT yourInstance;

在您的子课上使用它

if (!ReferenceEquals(yourInstance, null))
                        {
                            yourInstance();
                        }

并且您在父母身上声明它就像其他事件一样。