gpt4 book ai didi

wpf - TargetType 与元素类型不匹配

转载 作者:行者123 更新时间:2023-12-03 04:21:26 27 4
gpt4 key购买 nike

我为ButtonTargetType定义了一个简单的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 时有效

<小时/>

编辑我有两个具体问题:

  1. 我同意 FocusVisualStyleFrameworkElementFrameworkContentElement 的属性,但为什么设置它时出错在按钮上,尽管 Style 是一个namedstyle而不是typedstyle

  2. 为什么 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>

然后,您可以设置 ButtonStyle,如下所示:

<Button Style="{StaticResource buttonStyle}" ... />

关于wpf - TargetType 与元素类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30804752/

27 4 0