Wpf Label.ContentTemplate中的绑定
在下面的Xaml中,第一个控件(TextBlock本身)绑定和呈现RecordCount的值没有问题。但在第二个控件(带有ContentTemplate的标签)中,不会呈现RecordCount的值。然而,字面上的“汽车”是可以理解的。因此,我知道ContentTemplate正在工作,但是ContentTemplate中与RecordCount的绑定没有工作。我做错了什么Wpf Label.ContentTemplate中的绑定,wpf,mvvm,binding,Wpf,Mvvm,Binding,在下面的Xaml中,第一个控件(TextBlock本身)绑定和呈现RecordCount的值没有问题。但在第二个控件(带有ContentTemplate的标签)中,不会呈现RecordCount的值。然而,字面上的“汽车”是可以理解的。因此,我知道ContentTemplate正在工作,但是ContentTemplate中与RecordCount的绑定没有工作。我做错了什么 <TextBlock Text="{Binding RecordCount}"/> <Label Ho
<TextBlock Text="{Binding RecordCount}"/>
<Label HorizontalAlignment="Center" >
<Label.ContentTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Width="100">
<TextBlock Text="{Binding RecordCount}"/>
<TextBlock Text=" Cars"/>
</StackPanel>
</DataTemplate>
</Label.ContentTemplate>
</Label>
将标签上的内容属性设置为当前数据上下文:
<Label HorizontalAlignment="Center" Content="{Binding}">
或者,将StackPanel设置为内容,完全不使用模板:
<Label HorizontalAlignment="Center">
<StackPanel Orientation="Horizontal" Width="100">
<TextBlock Text="{Binding RecordCount}"/>
<TextBlock Text=" Cars"/>
</StackPanel>
</Label>
ContentTemplate用于显示内容。由于DataContext为null,因此在实例化模板时DataContext为null。文本块仍在创建中,因此会渲染Cars,但null没有RecordCount属性,因此第一个文本块渲染时没有文本
此外,如果仅使用两个文本块连接文本,则可以在.NET 3.5 SP1或更高版本中使用StringFormat属性:
<Label Content="{Binding RecordCount}" ContentStringFormat="{}{0} Cars"/>
作为替代,您可以将
记录计数
绑定到标签
的内容
,并让数据模板
注意如何显示它
<Label HorizontalAlignment="Center" Content="{Binding RecordCount}" >
<Label.ContentTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Width="100">
<TextBlock Text="{Binding}"/>
<TextBlock Text=" Cars"/>
</StackPanel>
</DataTemplate>
</Label.ContentTemplate>
</Label>
首先,感谢您提供的解决方案。更重要的是,谢谢你的解释。我现在完全懂机械了。但我必须把这种理解留到下一天,因为,是的,ContentStringFormat是我所需要的——我甚至不知道它的存在。再次感谢!