我正在尝试使用下面的 xaml 来定义一个 Button,它将:
- 有图像
- 具有连接文本,部分来自外部 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>
更新 w/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>