在我的项目中,我们在 MainPage 中创建了一个容器,每个视图都在那里加载。这样我们就不需要在代码隐藏中放置任何代码。当主页面在 App 上作为 RootVisual 启动时,MainPage 接收作为 DataContext 的类,我们在其中创建了一个 shell。容器从此类接收 DP,我们使用来自 shell 的事件来加载视图。
这是容器的代码:
<ContentControl Name="region1ContentControl" Content="{Binding Path=MainContent}" Style="{StaticResource ContentControlStyle}" Grid.Row="1" Margin="0,30" />
MainContent 属性:
public static readonly DependencyProperty MainContentProperty =
DependencyProperty.Register("MainContent", typeof(System.Windows.Controls.Control),
typeof(MainPagePresenter), null);
public System.Windows.Controls.Control MainContent
{
get { return (System.Windows.Controls.Control)GetValue(MainContentProperty); }
set { SetValue(MainContentProperty, value); }
}
加载视图的外壳 +
var presenter = (Bxf.IPresenter)Bxf.Shell.Instance;
presenter.OnShowView += (view, region) =>
{
if (region.Equals("MainContent", StringComparison.InvariantCultureIgnoreCase))
MainContent = view.ViewInstance;
else if (region.Equals("DetailContent", StringComparison.InvariantCultureIgnoreCase))
DetailContent = view.ViewInstance;
else
throw new ArgumentException(string.Format(AppStrings.InvalidRegionName, region));
};
MainPage 代码隐藏:
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
}
你有没有看到?注意:我也没有使用 Prism 或 MVVM 灯。