Могу ли я получить эту привязку в стиле? - PullRequest
1 голос
/ 18 июня 2011

Я хотел бы взять xaml, который у меня сейчас есть, для ComboBox (ниже), и сжать его в нечто вроде стиля, также показанного ниже. Я думаю это должно сработать, но у меня есть проблема с "типом" и я не знаю, как ее решить

"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>

<!-- 

Этот стиль определяет общее поле для элементов на панели фильтра. -> 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 Ответ

5 голосов
/ 18 июня 2011

Вам все еще нужно указать TargetType в производном стиле.(Или вы префикс свойства "ComboBox.")

...