PlainView не будет загружать страницу xaml, связанную с componentResourceKey и resourceid - PullRequest
0 голосов
/ 12 января 2012

У меня есть внешняя библиотека для хранения всех тем, в которых я определяю стиль для PlainViews.Класс plainview, расширяющий viewbase, находится в другом проекте.Мое приложение не загружает XAML для простого просмотра.кажется, что он не может найти resourceid, связанный с PlainView

Вот xaml, определяющий plainview

<Style x:Key="{ComponentResourceKey 
        TypeInTargetAssembly={x:Type Common:PlainView},
        ResourceId= PlainViewRsx}" 
        TargetType="{x:Type ListView}" 
        BasedOn="{StaticResource {x:Type ListBox}}">
</Style>

код PlainView, определенный в другом проекте.

1 Ответ

0 голосов
/ 08 февраля 2012

Я не уверен, правильно ли я понимаю ваш вопрос (или даже если у вас все еще есть эта проблема), поэтому я говорю вам о своем подходе, я думаю, что мне нужно что-то подобное:

  1. У меня есть свои темы во внешних сборках (каждая тема представлена ​​в виде словарь ресурсов), который можно изменить путем обмена словарями ресурсов класса во время выполнения
  2. Ключи к ресурсам хранятся в другой сборке
  3. Доступ к темам и ресурсам снова в другой сборке

Сначала убедитесь, что у вас есть все необходимые ссылки во всех необходимых проектах.

Класс, в котором хранятся ключи:

public class CoreResourceKeys
{
      public static readonly string BrushMyBrush = "MyBrush";
      public static ComponentResourceKey Brush_MyBrush
      {
          get
          {
              return new ComponentResourceKey(typeof(CoreResourceKeys), CoreResourceKeys.BrushMyBrush);
          }
      }
}

Мои файлы тем выглядели примерно так:

<ResourceDictionary xmlns=[...]
    xmlns:resources="clr-namespace:AssemblyThatStoresTheKeys;assembly=CoreResourceKeys">
    <SolidColorBrush x:Key="{ComponentResourceKey 
        TypeInTargetAssembly={x:Type resources:CoreResourceKeys}, 
        ResourceId={x:Static resources:CoreResourceKeys.BrushMyBrush}}"  
    Color="DarkMagenta"/>
</ResourceDictionary>

И элемент управления / страница, где бы я ни хотел использовать кисть, выглядел так:

<UserControl x:Class=[...] 
    xmlns:resources="clr-namespace:AssemblyThatStoresTheKeys;assembly=CoreResourceKeys">
    <TextBlock Background="{DynamicResource {x:Static resources:CoreResourceKeys.Brush_MyBrush}}" Text="The Shire"/>

этот пост мне очень помог: Форум поддержки MSDN - загрузка стилей из моей сборки

Я не уверен, поможет ли это вам. Если нет, попробуйте описать вашу проблему более подробно.

...