1

特定のコントロールの外観を定義するために使用される外部DLLにスタイルを設定しようとしています。

TextBoxesを対象としたスタイルを持つ外部DLLで定義されたリソースディクショナリがあります。

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style TargetType="{x:Type TextBox}" x:Key="TextStyle">
        <Setter Property="Text" Value="Moo"/>
    </Style>
</ResourceDictionary>

次に、このビルドされたDLLを別のアプリケーションで参照します。これは機能します:

<Window x:Class="HTMLTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/GX3Resources;component/Resources.xaml"/>

            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>

    <Grid>
        <TextBox Height="23" HorizontalAlignment="Left" Margin="45,217,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" Style="{StaticResource TextStyle}"/>
    </Grid>
</Window>

これはしません:

<Window x:Class="HTMLTest.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">
        <Window.Resources>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="pack://application:,,,/GX3Resources;component/Resources.xaml"/>

                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>
        </Window.Resources>

        <Grid>
            <TextBox Height="23" HorizontalAlignment="Left" Margin="45,217,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" />
        </Grid>
    </Window>

上記がTextStyleをテキストボックスとして取得し、スタイルがテキストボックスを対象としていることを願っています。

4

1 に答える 1

2

元のスタイルを編集できる場合は、そのキープロパティをターゲットタイプに設定することで、すべてのテキストボックスに自動的に使用できます。

<Style TargetType="{x:Type TextBox}" x:Key="{x:Type TextBox}">

スタイルを変更できない場合は、それに基づいて別のスタイルを作成してみてください。

<Style TargetType="{x:Type TextBox}" 
       BasedOn="{StaticResource TextStyle}" 
       x:Key="{x:Type TextBox}">
</Style>
于 2012-06-18T10:04:20.703 に答える