Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
wpf中奇怪的风格行为?_Wpf_Styles_Mergeddictionaries - Fatal编程技术网

wpf中奇怪的风格行为?

wpf中奇怪的风格行为?,wpf,styles,mergeddictionaries,Wpf,Styles,Mergeddictionaries,好的,我正在编写一个应用程序,在运行时加载合并字典,以改变外观和行为。当我陷入困境时:我表单上的一些控件对我认为它们必须响应的样式没有反应 我已经尽可能地简化了这个问题,并且提出了一些非常简单的方法,恐怕我忽略了显而易见的流血现象,但无论如何,它是这样的: <Window x:Class="Example.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="h

好的,我正在编写一个应用程序,在运行时加载合并字典,以改变外观和行为。当我陷入困境时:我表单上的一些控件对我认为它们必须响应的样式没有反应

我已经尽可能地简化了这个问题,并且提出了一些非常简单的方法,恐怕我忽略了显而易见的流血现象,但无论如何,它是这样的:

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

问题是:为什么第一个文本框不是绿色的? ==>也就是说,设计师将其显示为绿色,但在运行应用程序时,它不再是

我知道解决这个问题的方法是删除合并的dicitonary标记,但是我需要知道如何使用合并的字典来解决这个问题

谢谢

试试这个

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

我不确定这是否有效,但当我遇到样式问题时,我使用

TargetType="{x:Type TextBox}"

合并字典一直都很奇怪,您可以在其中设置任何想要的资源,但它们在运行时只处理资源字典之外的引用

    <ResourceDictionary.MergedDictionaries>

        <ResourceDictionary Source="StylesDictionary.xaml"/>

    </ResourceDictionary.MergedDictionaries>


唯一的要求是在其他字典中设置资源。

不,不是这样,tx无论如何,我已经更改了示例Nope,不是这样,tx无论如何,我已经更改了示例好了,我认为解决方法,因为在文档中声明将它们与内部混合是可以的,当然,由于2个或3个文本框被正确处理!但是,这肯定是解决我问题的办法!德克萨斯州!