Expander Header removing “_” character
سؤال
I'm binding the Expander.Header property in XAML to a backing public property of string type in my ViewModel using the MVVM pattern:
public string EnumName {...}
I'm setting this property to "X_Y_Z" but for some strange reason the Expander Header is removing the first underscore character and it is displayed as XY_Z. I tried adding a "\" before or setting it to @"X_Y_Z" but no luck.
Here my XAML binding portion:
<Expander IsExpanded="true" Header="{Binding EnumName}">
Anybody know why I'm getting this behavior? Is it taking the first "_" as a keyboard shortcut or a meta-character?
Thanks,
المحلول 3
@H.B. pointed me to the right direction. I ended up setting a Header Template for my Expander as follows, accessing the DataContext of the ancestor ListViewItem:
<Expander.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=DataContext.EnumName,RelativeSource={RelativeSource AncestorType=ListViewItem}}"/>
</DataTemplate>
</Expander.HeaderTemplate>
Since I'm now using a TextBlock it does not remove any of the "_" characters in my string.
نصائح أخرى
Probably converted to an access-key because there is a Label
or a ContentPresenter
with RecognizesAccessKey
set to true
in your Expander.Template
.
You can for example switch out the template or escape underscores in your values (two underscores in a row).
<Expander Header="{Binding Path=Name}">
<Expander.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding}"/>
</DataTemplate>
</Expander.HeaderTemplate>
</Expander>