我是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>
上述方法根本不起作用。任何人都可以建议更好的绑定方式。提前谢谢。
答案 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应用程序并按照以下步骤操作:
有一个Mainwindow.xaml,它将包含用户控件。
<Grid>
<local:ControlDesigner Grid.Row="1" />
</Grid>
创建一个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();
}
}
}
绑定文本块以查看父窗口的模型:
TextBlock Text =“{Binding CustomerName}”&gt;