Wpf 选择控件时加载局部视图

Wpf 选择控件时加载局部视图,wpf,Wpf,很抱歉标题在技术上不正确,我知道部分视图更像是MVC术语。然而,我不确定WPF中的等价物是什么 我有一个用户需要填写的大表单。为了帮助他们,我想垂直地将视图一分为二,并根据他们在左侧选择的字段在屏幕右侧显示有用的信息,或者在视图右侧加载快速选择框,然后完成左侧的项目 我已经玩了几个小时,并设法用GridSplitter分割视图,但从这里开始,我不确定从这里走到哪里 有没有人能给我一些建议,告诉我应该看什么,这样我才能进步。在MVC的世界里,我会通过Ajax加载它,然后就完成了 更新 这个问题被堵

很抱歉标题在技术上不正确,我知道部分视图更像是MVC术语。然而,我不确定WPF中的等价物是什么

我有一个用户需要填写的大表单。为了帮助他们,我想垂直地将视图一分为二,并根据他们在左侧选择的字段在屏幕右侧显示有用的信息,或者在视图右侧加载快速选择框,然后完成左侧的项目

我已经玩了几个小时,并设法用GridSplitter分割视图,但从这里开始,我不确定从这里走到哪里

有没有人能给我一些建议,告诉我应该看什么,这样我才能进步。在MVC的世界里,我会通过Ajax加载它,然后就完成了

更新
这个问题被堵住了,老实说,我不太清楚为什么。这个问题是正确的,似乎是两个框架之间的逻辑比较。我希望禁令解除,因为答案正是我想要的,肯定会对其他人有所帮助。

好问题,@Andy的评论为你指出了正确的方向。以下是我将如何实施它:

视图(
MainView.xaml
):


代码隐藏(MainView.xaml.cs):

使用System.Windows;
命名空间WpfApp4
{
/// 
///MainView.xaml的交互逻辑
/// 
公共部分类主视图:窗口
{
公共主视图()
{
初始化组件();
}
//我在代码中处理这些问题,因为这是非常依赖于UI的。
私有无效文本框1_GotFocus(对象发送方,路由目标)
{
((MainViewVM)DataContext).ChangeView(0);
}
私有无效文本框2_GotFocus(对象发送方,路由目标)
{
((MainViewVM)DataContext).ChangeView(1);
}
}
}
ViewModel
MainViewVM.cs

使用GalaSoft.MvvmLight;
使用System.Collections.Generic;
使用System.Windows.Controls;
命名空间WpfApp4
{
公共类MainViewVM:ObserveObject
{
私人用户控制(u SelectedUserControl);;
公共用户控件SelectedUserControl
{
get=>\u SelectedUserControl;
set=>set(参考选定的SERCONTROL,值);
}
公共列表视图选项{get;set;}
公共MainViewVM()
{
ViewOptions=新列表()
{
新的Box1View(),
新的Box2View()
};
ChangeView();
}
公共void ChangeView(int index=0)
{
如果(索引=0)
{
SelectedUserControl=查看选项[索引];
}
}
}
}
然后我的2
UserControl
s

Box1View.xaml


Box2View.xaml


以下是两种视图的外观:


部分视图的等价物是usercontrol。如果要在同一空间中的不同ui元素之间切换,请在contentcontrol中宿主。请首先查看viewmodel,了解执行此操作的常用方法。选择建议选择器的selecteditem(列表框、列表视图、数据网格或组合框)。您可以将contentcontrol的内容绑定到selecteditem的属性。创建该对象,您的viewmodel可以通过该对象公开不同的viewmodel类型。这可能是一个重复的问题,因为其他人问过如何动态/编程更改
用户控件(例如或)。我认为你的问题足够具体(询问焦点改变时如何加载)。可能是因为你没有任何代码?@peterbone很有可能,我已经阅读了多篇文章,尝试了一些好的方法,但都没有达到预期效果。不管怎样,我发现你的答案非常清楚和完整。再次感谢您,我相信您会明白这一点,但是如果您希望用户能够调整网格的列(或行)大小,您只需要一个网格拆分器。你可能需要,也可能不需要。谢谢你@peterbone和Andy。这正是我需要的