以下の xaml を使用して、次のボタンを定義しようとしています。
- イメージを持つ
- 一部は外部 resx から、一部は vm プロパティから、連結されたテキストがあります
- テキストの最初の文字に基づいたアクセラレータ キーを持っている
以下のマークアップは画像とテキストを表示しますが、アクセラレータ キーとしては機能しません (「_」が隠れず、Alt-A も機能しません)。
マークアップを修正してアクセラレータ キーの機能を取得するにはどうすればよいですか?
現在のマークアップと動作
<Style x:Key="AddNewItemButtonStyle" BasedOn="{StaticResource blueButtonStyle}" TargetType="{x:Type Button}">
<Setter Property="Content">
<Setter.Value>
<StackPanel Orientation="Horizontal" >
<Image Source="{resx:Resx ResxName=Presentation.Resources.MasterDetail, Key=bullet_add}" Stretch="Uniform" />
<TextBlock Text="_"/>
<TextBlock Text="{resx:Resx ResxName=Presentation.Resources.MasterDetail, Key=Subject_AddNew}" />
<TextBlock Text=" "/>
<TextBlock Text="{Binding Subject}" />
</StackPanel>
</Setter.Value>
</Setter>
<Setter Property="Command" Value="{Binding AddNewItemCommand}" />
</Style>
HB のコードで更新
画像だけ:
<Style x:Key="AddNewItemButtonStyle" BasedOn="{StaticResource blueButtonStyle}" TargetType="{x:Type Button}">
<Setter Property="Content" >
<Setter.Value>
<MultiBinding StringFormat="_{0} {1} {2}">
<Binding Source="{resx:Resx ResxName=Presentation.Resources.MasterDetail, Key=Add}"/>
<Binding Source="{resx:Resx ResxName=Presentation.Resources.MasterDetail, Key=New}"/>
<Binding Path="Subject"/>
</MultiBinding>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<StackPanel Orientation="Horizontal">
<Image Source="{resx:Resx ResxName=Presentation.Resources.MasterDetail, Key=bullet_add}" Stretch="Uniform" />
<ContentPresenter/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Command" Value="{Binding AddNewItemCommand}" />
</Style>