我有一個從ComboBox派生的組件。在它中,我創建了一個依賴屬性「myDependencyProp」,如下面的代碼。但是,在XAML中,當我引用此屬性時,VS表示該類型在ComboBox中不可用,並且不運行該應用程序。當我將ControlTemplate TargetType設置爲my:myComboBox時,它可以正常工作,但VS顯示警告:「myComboBox ControlTemplate TargetType與模板類型ComboBox不匹配」。該應用程序運行正常,但我不喜歡這個警告。我該如何解決它?謝謝! (Obs:my:只是myNameSpaces的一個虛構的別名)。WPF ControlTemplate TargetType匹配
C#:
namespace myNameSpace
{
public partial class myComboBox : ComboBox
{
public static readonly DependencyProperty myDependencyPropProperty =
DependencyProperty.Register("myDependencyProp", typeof(bool),
typeof(myComboBox), new UIPropertyMetadata(false));
public myComboBox()
{
InitializeComponent();
}
public bool IsFirstItemTip
{
get { return (bool)GetValue(myDependencyPropProperty); }
set { SetValue(myDependencyPropProperty, value); }
}
}
}
XAML:
<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>
我想你還應該將'Style'的'TargetType'設置爲'「{x:輸入my:myComboBox}」。 – 2014-09-26 18:26:22