WPF控制模板目标类型匹配

WPF控制模板目标类型匹配,wpf,Wpf,我有一个从组合框派生的组件。在其中,我创建了一个依赖属性“myDependencyProp”,如下代码所示。但是,在XAML中,当我引用此属性时,VS表示该类型在ComboBox中不可用,并且不运行应用程序。当我将ControlTemplate TargetType设置为my:myComboBox时,它工作正常,但是,VS显示一条警告:“myComboBox ControlTemplate TargetType与模板类型ComboBox不匹配”。应用程序运行正常,但我不喜欢此警告。我怎样才能修好

我有一个从组合框派生的组件。在其中,我创建了一个依赖属性“myDependencyProp”,如下代码所示。但是,在XAML中,当我引用此属性时,VS表示该类型在ComboBox中不可用,并且不运行应用程序。当我将ControlTemplate TargetType设置为my:myComboBox时,它工作正常,但是,VS显示一条警告:“myComboBox ControlTemplate TargetType与模板类型ComboBox不匹配”。应用程序运行正常,但我不喜欢此警告。我怎样才能修好它?谢谢(Obs:my:只是myNameSpaces的一个虚构别名)

C#:

XAML:


换行

以消除警告。警告告诉您,您的样式将隐式应用于所有
组合框
,但控件模板适用于从
myComboBox
派生的类型。谢谢您的回答,但我通过执行以下操作解决了问题:

首先,我将所有TargetTypes返回给{x:Type ComboBox},然后所有警告都消失了

之后,我不再使用前面介绍的MultiTrigger,而是使用MultiDataTrigger,代码如下:

<MultiDataTrigger>
    <MultiDataTrigger.Conditions>
        <Condition Binding="{Binding Path=SelectedIndex, RelativeSource={RelativeSource Self}}" Value="0"/>
        <Condition Binding="{Binding Path=myDependencyProp, RelativeSource={RelativeSource Self}}" Value="True"/>
    </MultiDataTrigger.Conditions>
    <MultiDataTrigger.Setters>
        <Setter .../>
    </MultiDataTrigger.Setters>
</MultiDataTrigger>


就是这样

我想您还应该将
样式的
TargetType
设置为
“{x:Type my:myComboBox}”
。我做了那个更改,应用程序仍然运行,但现在警告消息是:“myComboBox TargetType与元素组合框的类型不匹配”。这只是一个破解(或解决方法)。绑定
路径
在设计时没有解析(因此没有警告),但在运行时它运行正常。是的,我知道,但以前的所有建议都没有解析这些警告。我现在看不到另一个解决办法。
<ComboBox.Resources>
    <Style x:Key="myComboBox" TargetType="{x:Type ComboBox}">
        <Setter Property="SnapsToDevicePixels" Value="true"/>
        <Setter Property="OverridesDefaultStyle" Value="true"/>
        <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
        <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
        <Setter Property="ScrollViewer.CanContentScroll" Value="true"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type my:myComboBox}">
                    <Grid>
                        <ToggleButton 
                           ...
                        </ToggleButton>

                        <ContentPresenter
                           ...
                        </ContentPresenter>

                        <Popup 
                           ...
                        </Popup>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>

                                <Condition Property="SelectedIndex" Value="0"/>

                                <Condition Property="myDependencyProp" Value="True"/>

                            </MultiTrigger.Conditions>
                            <MultiTrigger.Setters>
                                <Setter ... />
                            </MultiTrigger.Setters>
                        </MultiTrigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ComboBox.Resources>
<MultiDataTrigger>
    <MultiDataTrigger.Conditions>
        <Condition Binding="{Binding Path=SelectedIndex, RelativeSource={RelativeSource Self}}" Value="0"/>
        <Condition Binding="{Binding Path=myDependencyProp, RelativeSource={RelativeSource Self}}" Value="True"/>
    </MultiDataTrigger.Conditions>
    <MultiDataTrigger.Setters>
        <Setter .../>
    </MultiDataTrigger.Setters>
</MultiDataTrigger>