我为Button
的TargetType
定义了一个简单的buttonStyle;但将样式设置为按钮会产生异常(exception)。
<Window>
<Window.Resources>
<Style x:Key="buttonStyle" TargetType="{x:Type Button}">
<Setter Property="Background" Value="Magenta"/>
</Style>
</Window.Resources>
<StackPanel Orientation="Horizontal">
<Button Content="1" FocusVisualStyle="{StaticResource buttonStyle}"/>
</StackPanel>
</Window>
<小时/>Additional information: 'Button' TargetType does not match type of element 'Control'.
此外,将 TargetType
设置为 Control
可以消除运行时错误,但按钮的视觉样式在获得 Focus
时不会改变>.
样式在设置为 Button.Style
时有效
编辑我有两个具体问题:
我同意 FocusVisualStyle
是 FrameworkElement
和 FrameworkContentElement
的属性,但为什么设置它时出错在按钮上,尽管 Style 是一个namedstyle而不是typedstyle?
为什么 FocusVisualStyle
未在 Button
上呈现? Button.FocusVisualStyle
是否在内部被任何更高优先级的值(例如模板、触发器或模板触发器)覆盖?
最佳答案
FocusVisualStyle
允许您在控件获得焦点时向用户提供视觉反馈。例如,添加一个看起来像控件边框的矩形
。
Style
是控件本身的外观和感觉。一切都解释清楚了here .
FocusVisualStyle
不是 Button
本身的样式,而是 Button
获得焦点时的样式。
参见here了解更多信息。
我认为你想要的是一个触发器
。
<Style x:Key="buttonStyle" TargetType="{x:Type Button}">
<Style.Triggers>
<Trigger Property="IsFocused" Value="True">
<Setter Property="Background" Value="Magenta"/>
</Trigger>
</Style.Triggers>
</Style>
然后,您可以设置 Button
的 Style
,如下所示:
<Button Style="{StaticResource buttonStyle}" ... />
关于wpf - TargetType 与元素类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30804752/
在 WPF 中,您可以设置 TargetType到类型的名称,或者您可以将其设置为 {x:Type nameOfType} . 有谁知道有什么区别? 最佳答案 没有。由于属性类型是 Type ,XAM
有什么区别 TargetType="{x:Type Button}" 和 TargetType="Button" 最佳答案 XAML 设计器应用内置类型转换器,将字符串值“Button”转换为 Sys
我为Button的TargetType定义了一个简单的buttonStyle;但将样式设置为按钮会产生异常(exception)。
我在 WPF 中创建了这个用户控件 当我编译这个时,我收到以下错误。 “UserControl1” ControlTemplate Tar
以下 TargetType 规范之间有什么区别? 1.