UserControl.Resources中定义的资源无法查看从代码中设置的MergedDictionaries中定义的元素

时间:2011-07-05 12:15:01

标签: wpf xaml styles resourcedictionary

DefaultStyle s包含DefaultStyle所有TextBox es:

public partial class UserControl1 : UserControl
{
    public UserControl1()
    {
        Resources.MergedDictionaries.Add(new DefaultStyles());
        InitializeComponent();
    }
}

然后是Xaml,我继承了样式并添加了一点:

<UserControl.Resources>
    <Style TargetType="TextBox" BasedOn="{StaticResource {x:Type TextBox}}">
        <Setter Property="Foreground" Value="Green "/>
    </Style>
</UserControl.Resources>

由于找不到我的StackOverFlowException,因此会引发DefaultStyle,因此它会自行引用。

为什么样式不能看到合并字典中的默认样式?

1 个答案:

答案 0 :(得分:0)

它无法看到它,因为它基本上取代了它。 InitializeComponent方法调用将使用您在XAML中定义的字典替换您在ctor中引用的字典。

基本上,你做错了。为什么你不能这样做:

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="DefaultStyles.xaml"/>
        </ResourceDictionary.MergedDictionaries>

        <Style TargetType="TextBox" BasedOn="{StaticResource {x:Type TextBox}}">
            ...
        </Style>
    </ResourceDictionary>
</UserControl.Resources>