0

OK、私は実行時にマージされた辞書をロードして、行き詰まったときに外観と動作を変更するアプリをプログラミングしていました。

私はできる限り問題を単純化しようとしましたが、非常に単純なものを思いついたので、明らかな出血を見落としているのではないかと心配していますが、とにかくここにあります:

<Window x:Class="Example.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="100" Width="50">
    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary>
                        <Style TargetType="{x:Type TextBox}">
                            <Setter Property="Background" Value="Green"></Setter>
                        </Style>
                </ResourceDictionary>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>
    <StackPanel>        
        <TextBox Text="1" Name="box1"/>
        <TextBox Text="2" Name="box2"/>
        <TextBox Text="3" Name="box3"/>
    </StackPanel>
</Window>

問題は、なぜ最初のテキストボックスが緑色でないのですか? ==>つまり、デザイナーは緑色で表示しますが、アプリを実行すると、もはや...

この特定の問題に対する解決策は、マージされた辞書タグを削除することであることは知っていますが、マージされた辞書を使用してこれを解決する方法を知る必要があります。

ありがとう!

4

3 に答える 3

2

MergedDictionaries は常に風変わりで、必要なリソースを設定できますが、実行時に外部のリソース ディクショナリ参照のみを処理します。

    <ResourceDictionary.MergedDictionaries>

        <ResourceDictionary Source="StylesDictionary.xaml"/>

    </ResourceDictionary.MergedDictionaries>

唯一の要件は、リソースが他のディクショナリに設定されていることです。

于 2009-10-09T13:56:00.757 に答える
0

これを試して...

<Style TargetType="{x:Type TextBox}">
于 2009-10-09T13:43:16.820 に答える
0

これでうまくいくかどうかはわかりませんが、スタイリングに問題があったときは、

TargetType="{x:Type TextBox}"
于 2009-10-09T13:44:19.623 に答える