[英]Binding a Textbox to a property in WPF
我在用户控件中有一个文本框我试图从我的主应用程序更新但是当我设置textbox.Text属性时它不显示新值(即使textbos.Text包含正确的数据)。 我试图将我的文本框绑定到一个属性来解决这个问题,但我不知道如何,这是我的代码 -
MainWindow.xaml.cs
outputPanel.Text = outputText;
OutputPanel.xaml
<TextBox x:Name="textbox"
AcceptsReturn="True"
ScrollViewer.VerticalScrollBarVisibility="Visible"
Text="{Binding <!--?????--> }"/> <!-- I want to bind this to the Text Propert in OutputPanel.xmal.cs -->
OutputPanel.xaml.cs
namespace Controls
{
public partial class OutputPanel : UserControl
{
private string text;
public TextBox Textbox
{
get {return textbox;}
}
public string Text
{
get { return text; }
set { text = value; }
}
public OutputPanel()
{
InitializeComponent();
Text = "test";
textbox.Text = Text;
}
}
}
您必须在TextBox的某个父级中设置DataContext,例如:
<UserControl Name="panel" DataContext="{Binding ElementName=panel}">...
然后绑定将是:
Text="{Binding Text}"
你不应该需要这个 - 从代码背后的具体元素来看通常是不好的做法:
public TextBox Textbox
{
get {return textbox;}
}
我希望这个例子可以帮到你。
1)创建UserControl
。
2)添加到XAML <TextBlock Text="{Binding Path=DataContext.HeaderText}"></TextBlock>
3)在UserControl
添加后面的代码中
public partial class MyUserControl: UserControl { public string HeaderText { set; get; } // Add this line public MyUserControl() { InitializeComponent(); DataContext = this; // And add this line } }
4)在控件之外,让我们说你需要在MainWindow Load
事件中做
this.gdMain = new MyUserControl {HeaderText =“YES”};
如果你开始绑定属性我建议你检查MVVM上的一些文章。 这是一个非常强大的体系结构,可以在WPF上使用。 我发现它在我的项目中非常有用。 检查这一个 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.