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,層級關系不一樣了。。。所以報錯


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM