在WPF中将文本框绑定到属性

5

我在一个用户控件中有一个文本框,我正在尝试从我的主应用程序更新它,但是当我设置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;
    }

}

}

3个回答

11

你需要在TextBox的某个父级中设置DataContext,例如:

<UserControl Name="panel" DataContext="{Binding ElementName=panel}">...

那么绑定将会是:

Text="{Binding Text}"

你不应该需要这个 - 从代码后台引用特定元素通常是一种不好的做法:

public TextBox Textbox
{
    get {return textbox;}
}

1
<TextBox DataContext="{Binding ElementName=[YOUR_TEXTBOX_NAME]}" Text="{Binding Text}"/> - MindRoasterMir

7
我希望这个例子能够帮到您。
1)创建一个。
2)在XAML中添加<TextBlock Text="{Binding Path=DataContext.HeaderText}"></TextBlock> 3)在的代码后面添加。
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 = "是" };


0

如果你开始绑定属性,我建议你查阅一些关于MVVM的文章。这是一种非常强大的架构,你可以在WPF上使用它。我在我的项目中发现它非常有用。请查看one


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接