Wpf xaml中相同的两个用户控件

Wpf xaml中相同的两个用户控件,wpf,mvvm,Wpf,Mvvm,我在wpf中有一个用户控件。我想在同一个视图中使用这个用户控件两次 我使用的是mvvm方法。有谁能给我一个好的建议,告诉我应该采取什么方法。嗯,有什么理由不只是使用两次吗?如果使用相同的属性绑定到VM(作为DataContext),它将“正常工作”,与将两个TextBlock(或其他“常规”控件)绑定到VM中的相同属性没有什么不同 在这里,我在同一个窗口中使用同一个控件,但它也可以很容易地在同一个UserControl、DataTemplate等中使用——无论您定义为“视图”是什么 XAML &

我在wpf中有一个用户控件。我想在同一个视图中使用这个用户控件两次


我使用的是mvvm方法。有谁能给我一个好的建议,告诉我应该采取什么方法。

嗯,有什么理由不只是使用两次吗?如果使用相同的属性绑定到VM(作为DataContext),它将“正常工作”,与将两个TextBlock(或其他“常规”控件)绑定到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>

但是…问题是…让我们认为我的用户控件是一个网格。当我在一个用户控件中选择一个项目时,将在另一个用户控件中选择相同的项目。这就是MVVM。如果使用具有相同属性的同一控件,则在这两个控件中应该发生相同的情况。如果使用相同的控件但更改了不同的属性,则会发生不同的情况。我已经更新了上面的答案-我添加了第三个文本块。txt1和txt2绑定到同一个属性,因此如果AnotherMVVMProperty发生更改,两者都应该反映出这一点。但是,txt3(也是TextBlock控件的一个实例)绑定到一个完全不同的值,并且不会受到AnotherMVVMProperty更改的影响。另一种方法是,您可以在一个视图上放置两个列表框,并将其绑定到您的ViewModel。如果它们都绑定到VM中的同一集合属性,则它们将是相同的;如果它们绑定到不同的属性,它们将是不同的。如果用户控件使用绑定而不是硬编码的值,那么它与任何其他控件都没有区别。我同意你的看法。但当我尝试时,结果不是这样的。我再查一遍。谢谢
class Window1 : Window
{
    MyViewModel mViewModel = new MyViewModel();

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