我可以将这种绑定变成一种风格吗?

时间:2011-06-17 21:58:49

标签: wpf resources styles resourcedictionary

我想把我目前拥有的xaml用于ComboBox(下面),并将其浓缩成类似Style的内容,如下所示。我认为这应该有用,但我有'类型'问题,不知道如何解决它

"Cannot resolve the Style Property 'Margin'. Verify that the owning type is the Style's TargetType, or use Class.Property syntax to specify the Property.)

当我查看现有的ComboBoxStyle(也在下面)我希望将这个新样式作为基础时,我看到我没有使用x:Type,但它似乎确实有效。

这种新风格有什么理由不起作用?我必须改变什么?

干杯,
Berryl

组合框,按工作原理):

<ComboBox 
    x:Name="cboDepartmentFilter" Style="{StaticResource ComboBoxStyle}"
    Margin="{StaticResource FliterPanelItem_Margin}" Width="{StaticResource FilterPanelItem_Width}"
    ItemsSource="{Binding Path=DepartmentFilterControl.Choices}"                     
    ToolTip="{Binding DepartmentFilterControlData.ToolTipTitle}"                    
    />

我想要的是什么:

<ComboBox Style="{StaticResource FilterPanelComboBoxStyle}" DataContext="{Binding DepartmentFilterControl}"  />

<!- in some resource file ->
<Style x:Key="FilterPanelComboBoxStyle" BasedOn="{StaticResource ComboBoxStyle}">
    <Setter Property="Margin" Value="{StaticResource FliterPanelItem_Margin}" />
    <Setter Property="Width" Value="{StaticResource FilterPanelItem_Width}" />
    <Setter Property="ItemsSource" Value="{Binding Choices}" />
    <Setter Property="ToolTip" Value="{Binding ToolTipTitle}" />
</Style>

<!-- 

此样式定义过滤器面板中项目的公共边距。    - &GT;          150

现有的ComboBoxStyle:

<!-- ComboBox Style -->
<Style x:Key="ComboBoxStyle" TargetType="ComboBox">
    <Setter Property="Background" Value="{StaticResource headerBrush}" />
    ...
    <Setter Property="Template">
        <Setter.Value>
        ...
        </Setter.Value>
    </Setter>

    <Setter Property="ItemContainerStyle" Value="{StaticResource ComboBoxItemStyle}" />
    <Setter Property="IsSynchronizedWithCurrentItem" Value="True" />

</Style>

1 个答案:

答案 0 :(得分:5)

您仍需要在派生样式中指定TargetType。 (或者在属性前添加"ComboBox."