2013-03-04 74 views
1

我想自動添加一段純文本到我的文本框的值。例如,我希望顯示John Latham的統計信息,因此可以自動添加「統計信息」,然後將Text屬性分配給我的控件。我做了一些研究,但由於某種原因,它不適合我。你能否驗證爲什麼?我想這可能是一個因爲Bindings的原因,我怎麼能從後面的代碼實現相同的結果?謝謝!文本框的靜態值+文本

<StackPanel Grid.Row="0" Grid.Column="1"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="50"/> 
      <ColumnDefinition Width="*"/> 
     </Grid.ColumnDefinitions> 
     <Image Name="imgStatistic" Source="/Images/Statistics.gif" Grid.Column="0" HorizontalAlignment="Left" Height="50" Width="50"/> 
     <TextBlock Text="{Binding Title, StringFormat='Statistic for {0}'}" Name="txtStatistics" VerticalAlignment="Bottom" Grid.Column="1" FontSize="18" TextWrapping="Wrap"/> 

    </Grid> 
</StackPanel> 

代碼背後:

this.txtStatistics.Text = emp.FirstName + " " + emp.LastName; 
+0

的StringFormat與綁定一起使用。當您從代碼隱藏設置「文本」時,您不再使用綁定。 – McGarnagle 2013-03-04 19:27:48

+0

如何使它從後面的代碼工作? – 2013-03-04 19:39:20

+0

另一個包含「統計信息」的TextBlock有什麼問題 – Phil 2013-03-04 19:40:49

回答

4

Text="{Binding Title}"意味着它的TextBoxDataContextTitle屬性的值綁定到TextBoxText
這個笨拙的句子會說:你需要一個對象具有Title屬性,並將其設置爲TextBox或其父母之一的DataContext

如果你沒有這樣的對象,數據綁定不適合你。
只需將代碼改成這樣:

this.txtStatistics.Text = string.Format("Statistic for {0} {1}", 
             emp.FirstName, emp.LastName); 
+0

那個對象,特別是如果只是一個POCO,需要實現'INotifyPropertyChanged'嗎? – 2013-03-04 19:42:34

+0

@MichaelPerrenoud:如果文本框中的文本應該更新屬性的更改:是的 – 2013-03-04 19:43:07

+0

好的,我只是想確保我對這個假設是正確的。當我第一次開始使用WPF和Silverlight進行數據綁定時,我錯過了那個界面***。 – 2013-03-04 19:44:12