xaml中的两个用户控件相同

时间:2010-10-14 14:29:34

标签: wpf mvvm

我在wpf中有一个用户控件。我希望在同一视图中使用此用户控件两次。

我正在使用mvvm方法。任何人都可以给我一个很好的建议,我应该遵循什么方法。

1 个答案:

答案 0 :(得分:1)

嗯,你有没有两次使用它的原因?如果绑定到具有相同属性的VM(作为DataContext),它将“正常工作”,与将两个TextBlocks(或其他“常规”控件)绑定到VM中的同一属性没有区别。

这里我在同一个窗口中使用相同的控件,但它可以很容易地在同一个UserControl,DataTemplate等中使用 - 无论你定义为“视图”。

<强> XAML

<Window x:Class="MyNamespace.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:MyNamespace"
        Title="My Window" Width="300" Height="300">
    <StackPanel>
        <local:MyUserControl x:Name="control1" 
                             SomeProperty="{Binding MyMVVMProperty}" />
        <local:MyUserControl x:Name="control2" 
                             SomeProperty="{Binding MyMVVMProperty}" />

        <TextBlock x:Name="txt1"
                   Text="{Binding AnotherMVVMProperty}" />
        <TextBlock x:Name="txt2"
                   Text="{Binding AnotherMVVMProperty}" />
        <TextBlock x:Name="txt3"
                   Text="{Binding AThirdMVVMProperty}" />

    </StackPanel>
</Window>

代码背后

class Window1 : Window
{
    MyViewModel mViewModel = new MyViewModel();

    public Window1()
    {
        this.DataContext = mViewModel;
    }
}