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

たとえば、テンプレートを切り替えたり、値のアンダースコアをエスケープしたりできます(2つのアンダースコアが連続して表示されます)。

于 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は正しい方向を示してくれました。最終的に、Expander のヘッダー テンプレートを次のように設定し、祖先 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 に答える