1

我的项目中有 5 个UserControls。单击主窗口时,我Button必须将相应的用户控件加载到主窗口。是否可以通过 XAML 实现?我正在使用 MVVM 框架。

4

2 回答 2

1

好吧,您可以执行以下 {Kazuo 的建议的替代方案}...在我的快速测试中效果很好。

<Windows.Resources>
    <ComboBox x:Key="options">
        <ControlTemplate x:Name="Button" TargetType="Control">
            <Button/>
        </ControlTemplate>
        <ControlTemplate x:Name="ComboBox" TargetType="Control">
            <ComboBox/>
        </ControlTemplate>
    </ComboBox>
</Windows.Resources>

然后在你的窗口项目中你放这样的东西

<Control x:Name="myCotrol" Margin="364,70,27,215" Template="{Binding Mode=OneWay, Source={StaticResource options},Path=SelectedItem}"  />
<TextBox x:Name="Test" HorizontalAlignment="Left" Height="23" Margin="398,83,-1,0"  Text="{Binding Source={StaticResource options},Path=SelectedIndex}" VerticalAlignment="Top" Width="120"/>

测试是任何项目决定使用哪个控件。您可以在运行时在文本的文本字段中输入 0 或 1 进行测试。然后这将在按钮或组合框之间切换。

希望这可以帮助 :)

于 2013-07-08T10:11:30.497 回答
0

您可以在 Xaml 的主窗口中已经拥有用户控件并将它们折叠起来。您的视图模型中有一个 bool 值,您将通过转换器绑定到用户控件的可见性(例如,真正转换为 Visibility.Visible)。当单击主窗口上的按钮时,您会将 bool 值设置为 true,然后控件就会出现。

不完全是纯 xaml 方法,因此这可能对您没有帮助

于 2013-07-08T09:13:57.770 回答