繁体   English   中英

WPF ContentControl内容未获取父资源

[英]WPF ContentControl content not getting parent Resources

我目前正在掌握WPF资源,并想知道你是否可以帮助我:

我有一个WPF窗口,其中包含自己的资源。 它还包含一个内容控件,它根据树视图中选择的内容更改其内容,例如:

contentControl1.Content = someUserControl;

这可以是UserControl,例如SomeUserControl ,它使用我在窗口xaml中定义的静态资源。

在后面的窗口代码中创建SomeUserControl的实例时,我得到一个XMLParseException('System.Windows.StaticResourceExtension上的'Provide值'抛出异常。')。 这是包含对静态资源的绑定的行。

为了解决这个问题,我将其添加到SomeUserControl的构造函数中(parentResources是实例化someUserControl的窗口资源):

public SomeUserControl(ResourceDictionary parentResources)
{
    this.Resources.MergedDictionaries.Add(parentResources);
    InitializeComponent();
}

这是在这种特殊情况下寻找资源的最佳方法吗? 谢谢你的帮助。

我假设你有一个{StaticResource myResource} 您是否尝试过使用{DynamicResource myResource}

请参阅http://msdn.microsoft.com/en-us/library/ms748942.aspx

编辑

好吧,鉴于你的资源是一个转换器,它不能使用动态资源,那么我认为你所做的可能是一个很好的解决方案。

根本问题是,在您的控件实例化时,它不是Window的一部分,因此它无法访问Window的资源。 正如StaticResource的术语static所暗示的那样,控件期望资源可用。 因此,在实例化控件时必须使其可用。

您可能还想看看像Prism这样的区域,这可能是更好的方式来处理交换“控件”(取决于您的需求)。

实际上,这取决于你所谈论的资源。

因为你做它的方式可能非常好,只有缺点,你可以从声明性编程中分离出来,这是WPF中编码的预期方式。

您还可以添加StaticResource ,例如在App.xaml中,因此一旦应用程序启动,它将窗口加载之前以任何方式进行初始化加载。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM