如何将网格动态添加到另一个网格中?我不能这样做:
myGrid.Children.Add(dg);
因为我没有这个网格的实例 - 我正在使用MVVM。
请帮助。
答案 0 :(得分:2)
我认为,既然你提到了MVVM,你想从View Model中完成这个吗?
在这种情况下,我的建议是从视图模型向视图发送消息。 在视图中添加订阅此消息并从那里添加网格。
你可以用最简单的形式做到这一点。这将使用优秀的MVVM Light framework:
ViewModel.cs:
private void CreateGrid()
{
Messenger.Default.Send<NotificationMessage>(new NotificationMessage("CreateGrid"));
}
View.xaml.cs:
Messenger.Default.Register<NotificationMessage>(this, nm =>
{
if (nm.Notification != "CreateGrid") return;
// Create grid here
});
答案 1 :(得分:1)
如果你是在运行时动态添加控件,简短的回答是你可能不会通过MVVM成功地做到这一点。将其放入代码隐藏可能是你最好的选择 - 不知道你正在构建什么类型的应用程序,很难通过判断并大声要求你必须使用MVVM。
话虽这么说,我很少发现自己处于WPF的情况,我必须像这样进行动态控制操作。相反,我结束使用不同的WPF结构(ListBox,ContentControl,ItemsControl等),以及像ItemTemplates这样的东西来获得我想要的东西。
同样,如果不了解您想要完成的任务,就很难提供任何形式的指导性指导。