【发布时间】:2013-11-27 11:32:07
【问题描述】:
我可以在设计时为按钮内容创建访问键,但在运行时无法创建
btnContent -- "C&ancel" -- 完美运行
btnContent -- "E&xit" --- 不起作用,当我尝试为字母“x”提供访问密钥时
我也尝试过 (_)underscore 和 "Exit" ,但没有运气。我只需要在字符串“Exit”中加下划线'x'。
下面是我的按钮样式
<Style x:Key="LTC_ButtomForm_A" TargetType="{x:Type Button}">
<Style.Resources>
<converter:ConverterFirstPartTextButton x:Key="ConverterFirstPartTextButton" />
<converter:ConverterUnderlineTextButton x:Key="ConverterUnderlineTextButton" />
<converter:ConverterLastPartTextButton x:Key="ConverterLastPartTextButton" />
</Style.Resources>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="Fondo" Margin="0" Padding="10,0" Background="#FF253A94" BorderBrush="#00000000" BorderThickness="1" CornerRadius="5">
Text="{TemplateBinding Content,Converter={StaticResource ConverterFirstPartTextButton}}" TextAlignment="Center" TextWrapping="Wrap" VerticalAlignment="Center">
<Run Text="{TemplateBinding Content, Converter={StaticResource ConverterUnderlineTextButton}}" TextDecorations="Underline" />
<Run Text="{TemplateBinding Content, Converter={StaticResource ConverterLastPartTextButton}}" />
</TextBlock>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
在哪里 ConverterFirstPartTextButton
Public Class ConverterFirstPartTextButton
Implements IValueConverter
#Region "IValueConverter Members"
Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object _
Implements IValueConverter.Convert
Dim part As String = String.Empty
If value IsNot Nothing Then
part = value.ToString().Split("&").FirstOrDefault()
End If
Return part
End Function
Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) _
As Object Implements IValueConverter.ConvertBack
Return value
End Function
#End Region
End Class
ConverterUnderlineTextButton
Public Class ConverterUnderlineTextButton
Implements IValueConverter
#Region "IValueConverter Members"
Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object _
Implements IValueConverter.Convert
Dim underlineLetter As String = String.Empty
If value IsNot Nothing Then
underlineLetter = value.ToString().Split("&").LastOrDefault
End If
If underlineLetter = value Then
Return String.Empty
Else
underlineLetter = underlineLetter.Substring(0, 1)
Return underlineLetter
End If
End Function
Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) _
As Object Implements IValueConverter.ConvertBack
Return value
End Function
#End Region
End Class
ConverterLastPartTextButton
Public Class ConverterLastPartTextButton
Implements IValueConverter
#Region "IValueConverter Members"
Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object _
Implements IValueConverter.Convert
Dim part As String = String.Empty
If value IsNot Nothing Then
part = value.ToString().Split("&").LastOrDefault
End If
If part <> value And part.Length > 1 Then
part = part.Substring(1)
Return part
Else
Return String.Empty
End If
End Function
Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) _
As Object Implements IValueConverter.ConvertBack
Return value
End Function
#End Region
End Class
这些转换的主要用途是在初始化期间为给定文本及其工作完美添加下划线。但是当我在运行时更改内容时,它显示如上图(图 2)。
【问题讨论】:
-
@Anton,感谢您的回复。已经检查了上面给出的链接它不起作用..还有其他方法可以通过代码吗?
标签: wpf button text mvvm runtime