通过XAML动态添加usercontrol

时间:2013-07-08 09:04:22

标签: .net wpf button user-controls

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

2 个答案:

答案 0 :(得分: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"/>

使用Test is Whatever项决定使用哪个控件。您可以在运行时通过在文本的文本字段中放置0或1来进行测试。然后,它将在Button或组合框之间切换。

希望这会有所帮助:)

答案 1 :(得分:0)

您可以在Xaml的主窗口中拥有用户控件并让它们折叠。您的viewmodel中将有一个bool值,您可以通过转换器绑定到用户控件的可见性(例如,true转换为Visibility.Visible)。单击主窗口上的按钮时,您可以将bool值设置为true,并显示控件。

不完全是纯粹的xaml方法,所以这可能对您没有帮助