Expander Header removing “_” character

微笑、不失礼 提交于 2020-03-01 20:43:08

问题


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,


回答1:


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).




回答2:


<Expander Header="{Binding Path=Name}">                                    
   <Expander.HeaderTemplate>
      <DataTemplate>
          <TextBlock Text="{Binding}"/>
      </DataTemplate>
   </Expander.HeaderTemplate>
</Expander>



回答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.



来源:https://stackoverflow.com/questions/12163645/expander-header-removing-character

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!