3

我使用 MVVM 模式将 XAML 中的 Expander.Header 属性绑定到我的 ViewModel 中的字符串类型的支持公共属性:

public string EnumName {...}

我将此属性设置为“X_Y_Z”,但由于某些奇怪的原因,扩展器标题正在删除第一个下划线字符,并显示为 XY_Z。我尝试在之前添加“\”或将其设置为@“X_Y_Z”但没有运气。

这是我的 XAML 绑定部分:

<Expander IsExpanded="true" Header="{Binding EnumName}">

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

谢谢,

4

3 回答 3

4

可能转换为访问密钥,因为您Label的.ContentPresenterRecognizesAccessKeytrueExpander.Template

例如,您可以切换模板或转义值中的下划线(连续两个下划线)。

于 2012-08-28T16:35:46.617 回答
3
<Expander Header="{Binding Path=Name}">                                    
   <Expander.HeaderTemplate>
      <DataTemplate>
          <TextBlock Text="{Binding}"/>
      </DataTemplate>
   </Expander.HeaderTemplate>
</Expander>
于 2013-01-30T07:03:35.700 回答
1

@HB 为我指明了正确的方向。我最终为我的扩展器设置了一个标题模板,如下所示,访问祖先 ListViewItem 的 DataContext:

<Expander.HeaderTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding Path=DataContext.EnumName,RelativeSource={RelativeSource AncestorType=ListViewItem}}"/>
    </DataTemplate>
</Expander.HeaderTemplate>

由于我现在使用的是 TextBlock,它不会删除字符串中的任何“_”字符。

于 2012-08-28T17:06:23.333 回答