【发布时间】:2014-06-01 02:13:40
【问题描述】:
我的项目中有一个 WPF 扩展器。我已将样式应用于扩展器以更改标题颜色等。这样做之后,我的数据仍然绑定到 Header 的内容区域,但它只是绑定了原始数据,而不是我指定的格式。请参阅下面的示例。
<Style x:Key="ValkyrieStyleExpander" TargetType="{x:Type Expander}">
<!-- Ommiting property setters for brevity -->
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding}" FontWeight="Bold"
Foreground="White" VerticalAlignment="Center" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
这是具有适当绑定语法的实际声明
<Expander Style="{StaticResource ValkyrieStyleExpander}"
Margin="10,10,0,0"
Width="670"
Header="{Binding PolicyNumber, StringFormat=Policy {0}}">
</Expander>
我运行应用程序时,标题应显示“Policy 123456”,并且在我重新设置扩展器的样式之前它已经这样做了。但是现在当我运行应用程序时,标题只显示“123456”。在数据绑定方面,我仍然是一个婴儿,所以我不确定我需要做些什么才能让新样式显示正确的数据。希望答案不是将其添加到 ValkyrieStyleExpender 的 Header Template 样式中,因为这会破坏拥有样式的目的(并非项目中的所有扩展器都用于显示特定策略)
【问题讨论】:
-
你能举一个例子,它没有样式(因为通常
StringFormat永远不应该在Expander.Header属性的绑定中工作)?StringFormat仅适用于类型为string的属性。 -
PolicyNumber的类型是string? -
@Rohit,是的,策略编号是视图模型上的字符串属性。
-
@fmunkert,刚刚从扩展器中删除了样式声明,它对我有用
-
不确定你编辑了什么,@Andy G,但恭喜你选择了一个很棒的图标,哈哈。
标签: wpf data-binding expander