如何将Textbox文本与其他类属性绑定?

时间:2017-04-26 04:34:44

标签: c# wpf xaml data-binding

我是Xaml和绑定概念的新手。如何绑定'客户名称' MainClass的属性,文本内容为' TextBox1'在XAML?

这是我的MainClass,

namespace TextBinding.Module
{
    public class MainClass
    {
        public string CustomerName { get; set; }
    }

}

我的XAML编码是,

<UserControl x:Class="TextBinding.Design.ControlDesigner"
         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"
         xmlns:TestControl="clr-namespace:TextBinding.Module"
         mc:Ignorable="d" d:DesignHeight="1000" d:DesignWidth="1000">

     <TestControl:MainClass x:Key="Test1" />
     <Grid>
        <TextBox x:Name="TextBox1" Height="50" Text="{Binding Test1.CustomerName, Mode=TwoWay}" />
     </Grid>
</UserControl>

上述方法根本不起作用。任何人都可以建议更好的绑定方式。提前谢谢。

2 个答案:

答案 0 :(得分:0)

    <UserControl x:Class="TextBinding.Design.ControlDesigner"
             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"
             xmlns:TestControl="clr-namespace:TextBinding.Module"
             mc:Ignorable="d" d:DesignHeight="1000" d:DesignWidth="1000">
     <UserControl.Resources>
           <TestControl:MainClass x:Key="Test1" />
        </UserControl.Resources>

         <Grid>
            <TextBox x:Name="TextBox1" Height="50" Text="{Binding CustomerName, Mode=TwoWay}" 
DataContext="{DynamicResource Test1}" />
         </Grid>
    </UserControl>

您需要在usercontrol resources部分中定义类对象。您还需要在textbox的DataContext属性中指定该类对象。

答案 1 :(得分:0)

这不是一个好主意,您应该尝试使用MVVM并使用单独的视图View Model来执行此类操作。

但对于你的问题,下面是答案:

public partial class ControlDesigner: UserControl
    {

      public string CustomerName { get; set; }

    public MainWindow()
    {
       // Set Value
       // CustomerName = "Test Name";
        InitializeComponent();
        this.DataContext = this;
    }
}

以下是问题的示例MVVM方法

创建一个新的WPF应用程序并按照以下步骤操作:

  1. 有一个Mainwindow.xaml,它将包含用户控件。

    <Grid>
      <local:ControlDesigner Grid.Row="1" />
    </Grid>
    
  2. 创建一个ViewModel并将用户MainWindow的datacontext设置为ViwModel。

            public class MainWindowViewModel        
            {
                private string _customeName;
    
                public string CustomerName
                {
                    get { return _customeName; }
                    set { _customeName = value; }
                }
    
    
            }
    
            public partial class MainWindow : Window
            {
    
    
                public MainWindow()
                {
                    InitializeComponent();
                    this.DataContext = new MainWindowViewModel();
                }
            }
        }
    
  3. 绑定文本块以查看父窗口的模型:

    TextBlock Text =“{Binding CustomerName}”&gt;