0

Generic.xamlファイルにデフォルトのスタイルを持つカスタムコントロールである拡張WPFツールキットウィザードコントロールを変更しようとしていますが、ウィザードの種類に基づいてスタイルが完全に変更されるように変更したいと思います

<Style TargetType="{x:Type local:Wizard}">
    <Style.Triggers>
        <Trigger Property="WizardType" Value="Normal">
            <Setter Property="Style" Value="{StaticResource StandartWizardTemplate}" />
        </Trigger>
    </Style.Triggers>
</Style>

これは私がそのgeneric.xamlを変更する方法ですが、StandardWizardTemplateは主張中に解決されません

<Style x:Key="StandartWizardTemplate" TargetType="{x:Type local:Wizard}">
    <Setter Property="Background" Value="#F0F0F0" />
    <Setter Property="BorderBrush" Value="#A0A0A0" />
    <Setter Property="BorderThickness" Value="1" />
    <Setter Property="ItemsPanel">
        <Setter.Value>
            <ItemsPanelTemplate>
                <Grid />
            </ItemsPanelTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="Template">
    //Content of default template before modification
    </Setter>
</Style>

同じファイルに、トリガーに基づいてPage ControlTemplateを変更する別のスタイル定義が含まれているので、ウィザードでも同じことができます。

<Style TargetType="{x:Type local:WizardPage}">
    <Style.Triggers>
        <Trigger Property="PageType" Value="Blank">
            <Setter Property="Background" Value="#FFF0F0F0" />
            <Setter Property="BorderThickness" Value="0" />
            <Setter Property="Template" Value="{StaticResource BlankWizardPageTemplate}" />
        </Trigger>
        <Trigger Property="PageType" Value="Exterior">
            <Setter Property="Background" Value="#FFFFFF" />
            <Setter Property="BorderThickness" Value="0" />
            <Setter Property="ExteriorPanelBackground" Value="#E3EFFF" />
            <Setter Property="Template" Value="{StaticResource ExteriorWizardPageTemplate}" />
        </Trigger>
        <Trigger Property="PageType" Value="Interior">
            <Setter Property="Background" Value="#FFF0F0F0" />
            <Setter Property="BorderBrush" Value="{x:Static SystemColors.ActiveBorderBrush}" />
            <Setter Property="BorderThickness" Value="0,1,0,0" />
            <Setter Property="HeaderBackground" Value="#FFFFFF" />
            <Setter Property="Template" Value="{StaticResource InteriorWizardPageTemplate}" />
        </Trigger>
    </Style.Triggers>
</Style>

ウィザードのカスタムコントロールをPageと同じようにスタイリングできるように、誰かが適切なスタイリングの実装を提供してくれますか?

4

1 に答える 1

0

OK、この問題の解決策を見つけました。私がしなければならなかったのは、新しい ResourceDictionary を作成し、キーを設定して Wizard ControlTemplate を宣言することだけでした。その後、Generic.xaml 内で Marge リソース ディクショナリを作成し、すべての個別のコントロール テンプレート ディクショナリを内部に含めました。

結局のところ、私のgeneric.xamlはこのように見えます。

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:Converters="clr-namespace:CuratioCMS.Client.UI.Core.Converters"
                xmlns:local="clr-namespace:CuratioCMS.Client.UI.Controls">
<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="./NormalWizardStyle.xaml" />
    <ResourceDictionary Source="./StepBased.xaml" />
    <ResourceDictionary Source="./MixedModeWizard.xaml" />
</ResourceDictionary.MergedDictionaries>

<Converters:WizardPageButtonVisibilityConverter x:Key="WizardPageButtonVisibilityConverter" />

<Style TargetType="{x:Type local:Wizard}">
    <Style.Triggers>
        <Trigger Property="WizardType" Value="Normal">
            <Setter Property="Template" Value="{StaticResource NormalModeWizardTemplate}" />
        </Trigger>
        <Trigger Property="WizardType" Value="StepWisivle">
            <Setter Property="Template" Value="{StaticResource StepModeWizardTemplate}" />
        </Trigger>
        <Trigger Property="WizardType" Value="MixedMode">
            <Setter Property="Template" Value="{StaticResource MixedModeWizardTemplate}" />
        </Trigger>
    </Style.Triggers>
    <Setter Property="Background" Value="#F0F0F0" />
    <Setter Property="BorderBrush" Value="#A0A0A0" />
    <Setter Property="BorderThickness" Value="1" />
    <Setter Property="ItemsPanel">
        <Setter.Value>
            <ItemsPanelTemplate>
                <Grid />
            </ItemsPanelTemplate>
        </Setter.Value>
    </Setter>
</Style>
</ResourceDictionary>
于 2012-10-14T01:55:57.713 に答える