簡體   English   中英

將文本框綁定到WPF中的屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM