如何在 wpf UserControl 中参数化绑定?

我有一个 wpf Window ( MyWindow),它DataContext设置为MyViewModel视图模型类:


我的窗口.xaml

<Window x:Class="MyProject.MyWindow"

      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">


      <MyUserControl Text="{Binding MyText, Mode=TwoWay}" />

</Window>

我的窗口.xaml.cs

public class MyWindow : Window

{

    MyWindow()

    {

       InitializeComponent();

       DataContext = new MyViewModel();

    }

}

视图模型.cs

// MyViewModel implements IPropertyChanged

public class MyViewModel : INotifyPropertyChanged

{

    public string MyText { get { ... } set { ... } }


    ...

}

我想将MyText属性的绑定传递MyWindow给以下 UserControl ( MyUserControl):


我的用户控件.xaml

<UserControl x:Class="MyProject.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">

    <StackPanel>

        <TextBox

            Name="MainTextBox"

            Text="{Binding Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnValidationError=True}"  

        />

    </StackPanel>

</UserControl>

我的用户控件.xaml.cs

public partial class MyUserControl : UserControl

    {

        public static readonly DependencyProperty TextProperty = DependencyProperty.Register(

            "Text",

            typeof(string),

            typeof(MyUserControl),

            new UIPropertyMetadata(TextPropertyChangedHandler)

        );


我想获得在键入的内容Textbox下MyUserControl进入MyViewModel.MyText。如何做到这一点?


我试图绑定MyText到Text财产MyUserControl和随后的结合Text中TextBox,以Text从MyUserControl但这并不工作。


动漫人物
浏览 365回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP