2013-03-04 73 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