gpt4 book ai didi

wpf - 在 Label.ContentTemplate 中绑定(bind)

转载 作者:行者123 更新时间:2023-12-03 02:33:32 27 4
gpt4 key购买 nike

在下面的 Xaml 中,第一个控件(TextBlock 本身)在绑定(bind)和呈现 RecordCount 的值时没有问题。但在第二个控件(带有 ContentTemplate 的 Label)中,RecordCount 的值未呈现。然而,字面的“汽车”渲染得很好。所以我知道 ContentTemplate 正在工作,但从 ContentTemplate 内部到 RecordCount 的绑定(bind)却不起作用。我做错了什么?

<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 上的 Content 属性设置为当前的 DataContext:

<Label HorizontalAlignment="Center" Content="{Binding}">

或者,将 StackPanel 设置为内容并且根本不使用模板:

<Label HorizontalAlignment="Center">
<StackPanel Orientation="Horizontal" Width="100">
<TextBlock Text="{Binding RecordCount}"/>
<TextBlock Text=" Cars"/>
</StackPanel>
</Label>

ContentTemplate 用于呈现内容。由于它为 null,因此在实例化模板时 DataContext 也为 null。 TextBlock 仍会被创建,因此 Cars 会被渲染,但 null 没有 RecordCount 属性,因此第一个文本 block 会渲染为没有文本。

此外,如果您仅使用两个 TextBlock 来连接文本,则可以使用 .NET 3.5 SP1 或更高版本中的 StringFormat 属性:

<Label Content="{Binding RecordCount}" ContentStringFormat="{}{0} Cars"/>

关于wpf - 在 Label.ContentTemplate 中绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3595512/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com