• WPF 资源xxx具有不兼容的类型


    =_=这其实是一个低级错误。。。可是最后还是我同事帮我发现的,很是惭愧,决定写一篇随笔用于记录。。。

    引用的地方是这样写的:

     请注意他这边是Template="***";

    那么你资源文件中正确的写法应该是:

        <!--textbox样式-->
        <ControlTemplate x:Key="TextBoxTemplate1" TargetType="{x:Type TextBox}">
            <Border x:Name="Bd" 
                        BorderBrush="{TemplateBinding BorderBrush}" 
                        BorderThickness="{TemplateBinding BorderThickness}"  
                        Background="{TemplateBinding Background}" 
                        CornerRadius="5">
                <ScrollViewer x:Name="PART_ContentHost"/>
            </Border>
            <ControlTemplate.Triggers>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
                    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                </Trigger>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="BorderBrush" TargetName="Bd" Value="#FF4176D3"/>
                    <Setter Property="BorderThickness" TargetName="Bd" Value="1"/>
                    <Setter Property="Foreground" Value="#FF4176D3"/>
                </Trigger>
    
            </ControlTemplate.Triggers>
        </ControlTemplate>

    如果你把这个控件模板包在style里面就是这样写:

    <Style x:Key="TextBoxTemplate1" TargetType="{x:Type TextBox}">
            <Setter Property="Template">
                <Setter.Value>
                    <!--textbox样式-->
                    <ControlTemplate>
                        <Border x:Name="Bd" 
                        BorderBrush="{TemplateBinding BorderBrush}" 
                        BorderThickness="{TemplateBinding BorderThickness}"  
                        Background="{TemplateBinding Background}" 
                        CornerRadius="5">
                            <ScrollViewer x:Name="PART_ContentHost"/>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsEnabled" Value="False">
                                <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
                                <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                            </Trigger>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter Property="BorderBrush" TargetName="Bd" Value="#FF4176D3"/>
                                <Setter Property="BorderThickness" TargetName="Bd" Value="1"/>
                                <Setter Property="Foreground" Value="#FF4176D3"/>
                            </Trigger>
    
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

    就会报错。。。原因很简单你的样式文件是个style,而你引用的地方是个Template,层级关系不一样了。。。所以报错

  • 相关阅读:
    数据结构与算法之二叉树的遍历
    数据结构与算法之二叉树
    数据结构与算法之单调栈
    数据结构与算法之栈
    C里面的变长参数
    C++模板问题之多出的static
    通过返回值'重载'函数
    flask小记
    ANSI C
    Python坑
  • 原文地址:https://www.cnblogs.com/jyj666/p/15830321.html
Copyright © 2020-2023  润新知