我正在使用MVVM模式将XAML中的Expander.Header属性绑定到我的ViewModel中的字符串类型的后备公共属性:
public string EnumName {...}
我将此属性设置为“X_Y_Z”,但由于某些奇怪的原因,Expander Header正在删除第一个下划线字符,它显示为XY_Z。我尝试在之前添加“\”或将其设置为@“X_Y_Z”,但没有运气。
这是我的XAML绑定部分:
<Expander IsExpanded="true" Header="{Binding EnumName}">
有人知道我为什么会这样做吗?是将第一个“_”作为键盘快捷键还是元字符?
谢谢,
答案 0 :(得分:4)
可能转换为访问密钥,因为Label
中有RecognizesAccessKey
或ContentPresenter
Expander.Template
设置为true
。
例如,您可以在值中切换模板或转义下划线(连续两个下划线)。
答案 1 :(得分:3)
<Expander Header="{Binding Path=Name}">
<Expander.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding}"/>
</DataTemplate>
</Expander.HeaderTemplate>
</Expander>
答案 2 :(得分:1)
@ H.B。我指出了正确的方向。我最终为我的扩展器设置了一个Header模板,如下所示,访问祖先ListViewItem的DataContext:
<Expander.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=DataContext.EnumName,RelativeSource={RelativeSource AncestorType=ListViewItem}}"/>
</DataTemplate>
</Expander.HeaderTemplate>
由于我现在正在使用TextBlock,因此它不会删除字符串中的任何“_”字符。