如何使用VM的数据绑定将简单wpf标记提取到usercontrol

如何使用VM的数据绑定将简单wpf标记提取到usercontrol,wpf,xaml,user-controls,Wpf,Xaml,User Controls,问这个问题我觉得很傻,但我整个周末都在阅读微软和非微软的文档,这些文档要么过于简单化,要么涵盖了一些与我无关的奇怪的深奥案例 我需要的是非常简单的。我有一些加价 <Viewbox Grid.Row="1" Margin="55,3,15,0"> <Grid> <Grid.ColumnDefinitions> <C

问这个问题我觉得很傻,但我整个周末都在阅读微软和非微软的文档,这些文档要么过于简单化,要么涵盖了一些与我无关的奇怪的深奥案例

我需要的是非常简单的。我有一些加价

            <Viewbox Grid.Row="1" Margin="55,3,15,0">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="303*"></ColumnDefinition>
                        <ColumnDefinition Width="156*"></ColumnDefinition>
                    </Grid.ColumnDefinitions>
                    <TextBlock Grid.Column="0" Text="{Binding TextSettings.PlayerNumber}" />
                    <TextBlock Grid.Column="1" Text="{Binding PlayerNumber}" />
                </Grid>
            </Viewbox>

出于各种原因,我希望该viewbox的内容位于另一个文件中。它甚至不必是可重用的,它只需要在一个UserControl中,我可以包括,也可以不包括,或者根据应用程序状态包括一个不同的UserControl

我不明白的是如何将
网格
移动到自己的用户控件中,并让绑定继续工作。我假设我必须通过一个参数将ViewModel从父视图传递到子视图,但在我的一生中,我找不到正确语法的示例

所以。如果要将其移动到自己的用户控件

  • 用户控件是什么样子的
  • 为了使绑定正常工作,我需要向UserControl的codebehind添加什么
  • 包含点是什么样的

  • 您的数据上下文将继承到可视化树中。因此,只需定义您的
    UserControl

    <UserControl x:Class="WpfApplication1.MyUserControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="303*"></ColumnDefinition>
                <ColumnDefinition Width="156*"></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <TextBlock Grid.Column="0" Text="{Binding TextSettings.PlayerNumber}" />
            <TextBlock Grid.Column="1" Text="{Binding PlayerNumber}" />
        </Grid>
    </UserControl>
    
    然后使用它:

    <Viewbox Grid.Row="1" Margin="55,3,15,0">
        <local:MyUserControl/>
    </Viewbox>
    
    
    
    <Viewbox Grid.Row="1" Margin="55,3,15,0">
        <local:MyUserControl/>
    </Viewbox>