0

好的,我正在编写一个在运行时加载合并字典的应用程序,以便在我卡住时改变外观和行为:我的表单上的一些控件只是没有对我认为它们必须做出反应的样式做出反应。

我试图尽可能地简化问题,并想出了一些如此简单的东西,我担心我忽略了明显的流血,但无论如何它是这样的:

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

问题是:为什么第一个文本框不是绿色的?==> 也就是设计器显示为绿色,但是运行app的时候就不再...

我知道解决这个特定问题的方法是删除合并的词典标签,但我需要知道如何使用合并词典来解决这个问题。

谢谢!

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 回答