1

自動スタイル継承について質問があります。

基本的に、テキストボックスのデフォルトスタイルとそれから派生するクラスのテキストブロックを定義したいスーパークラスがあります。これらのスタイルは、Styles.xamlで定義されているデフォルトのスタイルに基づいています。

<controls:BaseUserControl.Resources>

    <Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource DisplayLabel}">
        <Setter Property="Foreground" Value="Black"/>
        <Setter Property="Margin" Value="10,0,10,0"/>
        <Setter Property="HorizontalAlignment" Value="Left"/>
        <Setter Property="VerticalAlignment" Value="Center"/>
    </Style>

    <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource InputField}">
        <Setter Property="Height" Value="30"/>
        <Setter Property="Margin" Value="10,0,0,0"></Setter>
        <Setter Property="HorizontalAlignment" Value="Left"/>
        <Setter Property="VerticalAlignment" Value="Center"/>
        <Setter Property="VerticalContentAlignment" Value="Center"></Setter>
    </Style>

</controls:BaseUserControl.Resources>

このクラスはと呼ばれDataEntryViewます。

このクラスから派生すると、テキストブロックとテキストボックスは、ここで定義したものではなく、デフォルトのWindowsの外観になります。

<views:DataEntryView.Resources>
    <!-- Do I need to add anything here? -->
</views:DataEntryView.Resources>

忘れているのは何ですか?

基本的に、すべてのテキストブロックとテキストボックスのスタイルを明示的に特定のキーに設定したくありません。

4

1 に答える 1

0

RessourceDictionary にスタイルを配置し、これを RessourceDictionary.MergedDictionaries プロパティを使用してスーパー クラスと派生クラスに含める必要があります。

スタイル ファイル (Styles.xaml)

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" ....>
    <Style ...> <!--Your styles goes here-->
</ResourceDictionary>

コントロール (親と子):

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Styles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</UserControl.Resources>
于 2012-11-21T08:55:25.367 に答える