1

我在用戶控件中有一個文本框我試圖從我的主應用程序更新,但是當我設置textbox.Text屬性時,它不顯示新值(即使textbos.Text包含正確的數據)。我想我的文本框綁定到一個屬性來解決這個問題,但我不知道怎麼了,這裏是我的代碼 -將文本框綁定到WPF中的屬性

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; 
    } 

} 

}

回答

5

你必須設置一個DataContext在文本框的一些父母,例如:

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

然後結合將是:

Text="{Binding Text}" 

而且你不應該需要這個 - 指代後面代碼的特定元素通常是不好的做法:

public TextBox Textbox 
{ 
    get {return textbox;} 
} 
+0

我已經做了這個,但文本框仍然不會更新:s – 2011-02-18 09:54:20

1

如果你開始綁定屬性,我建議你檢查MVVM上的一些文章。 這是一個非常強大的架構,您可以在WPF上使用。我發現它在我的項目中非常有用。 檢查這個one

3

我希望這個例子能幫助你。 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 {Hea derText =「YES」};

相關問題