我有一个主窗口,它包含两个视图(用户控件)。一个是UserControl1
,另一个是UserControl2
跟随切换系统。
UserControl1
,然后切换视图。我希望在加载UserControl1
后启动一个窗口。
我正在使用消息传递模式启动视图,并在app.xaml
或MainView.xaml
中注册视图。
我该怎么办?
我的MainView的Xaml:
<Window x:Class="CustomListView.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:CustomView="clr-namespace:CustomListView"
Title="MainView"
Width="300"
Height="300">
<Window.InputBindings>
<CustomView:RelayKeyBinding Key="F12" CommandBinding="{Binding Path=Toggle}"></CustomView:RelayKeyBinding>
</Window.InputBindings>
<Window.Resources>
<DataTemplate x:Key="ExecutionView">
<CustomView:ExecutionView />
</DataTemplate>
<DataTemplate x:Key="ConfigView">
<CustomView:ConfigView />
</DataTemplate>
<Style x:Key="mainContentControlStyle"
TargetType="{x:Type ContentControl}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Mode}"
Value="1">
<Setter Property="ContentTemplate" Value="{StaticResource ResourceKey=ConfigView}" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=Mode}"
Value="0">
<Setter Property="ContentTemplate" Value="{StaticResource ResourceKey=ExecutionView}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<ContentControl Content="{Binding}"
Style="{StaticResource ResourceKey=mainContentControlStyle}" />
</Grid>
</Window>
如果您需要更多代码,我很乐意发布。
提前致谢。
答案 0 :(得分:0)
您可以使用EventTrigger将Window的Loaded事件转换为命令执行,然后在那里创建窗口。这将是我的代码:
<UserControl>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command="{Binding UserControl_LoadedCommand"} />
</i:EventTrigger>
</i:Interaction.Triggers>
</UserControl>
如果您使用MVVM Light,则代码为:
<UserControl>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<Galasoft_MvvmLight_Command:EventToCommand Command="{Binding UserControl_LoadedCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</UserControl>