3

我有以下设置:

主应用程序加载一个带有 IPlugin 实现的 XAP。该插件包含一个“DisplayPanel”,其中包含一个引用的控件和其他控件。这里的 DisplayPanel 只是一个容器控件,用于显示引用的 Control。

来自程序集的此引用控件在此程序集中使用来自 ResourceDictionary xaml 的样式。至少这是我想要的。问题是引用的 Control 抛出错误:

找不到具有名称/键 PlayerPanelGrad [行:1500 位置:127] 的资源

我试图通过 Merged Resource 字典引用引用 theResourceDictionary 来获得风格:

       <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="TableControls;component/ControlsStyle.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>

但这不起作用。

你会如何处理这个?

4

4 回答 4

1

我让它工作的唯一方法是在 InitializeComponent 调用之前以编程方式将资源字典加载到控件(在类库中):

public ActionPanel()
{
     StreamResourceInfo sr = Application.GetResourceStream(
          new Uri("TableControls;component/ControlsStyle.xaml", UriKind.Relative));
     Application.Current.Resources.Add("plop",sr.Stream);
     // Required to initialize variables
     InitializeComponent();
}
于 2010-07-07T22:10:27.670 回答
0

//先动态加载other.dll,然后使用如下代码:

       StreamResourceInfo srf = Application.GetResourceStream(new Uri("otherdll;component/Resources/Brush.xaml", UriKind.Relative));

        StreamReader sr = new StreamReader(srf.Stream);
        string stt = sr.ReadToEnd();
        ResourceDictionary dict = XamlReader.Load(stt) as ResourceDictionary;
        Application.Current.Resources.MergedDictionaries.Add(dict);
于 2011-05-04T02:01:20.323 回答
0

这个问题可能会有所帮助,尽管老实说,我仍在尝试自己弄清楚: Using MEF to import a WPF DataTemplate?

于 2010-11-04T19:44:16.953 回答
0

为了将来参考,我的 XAML 文件位于需要该/字符的解决方案的子目录中,但文件位于其中命名的子目录Assets中。

<ResourceDictionary 
     Source="/MyAssemblyName;component/Assets/RadResources.xaml" />

.XAML 文件也是Page在解决方案中构建的。

于 2015-08-14T19:54:12.927 回答