扩展器标头删除“_”字符

时间:2012-08-28 16:31:44

标签: c# wpf xaml header expander

我正在使用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}">

有人知道我为什么会这样做吗?是将第一个“_”作为键盘快捷键还是元字符?

谢谢,

3 个答案:

答案 0 :(得分:4)

可能转换为访问密钥,因为Label中有RecognizesAccessKeyContentPresenter 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,因此它不会删除字符串中的任何“_”字符。