Почему для объединенных словарей в Generic.xaml требуются абсолютные uri?

Рассмотрим файл | Новый проект приложения WPF, который содержит:

  1. Новый настраиваемый элемент управления с именем CustomControl1
  2. Два новых словаря ресурсов с именами Dictionary1 и Dictionary2

Возьмите сгенерированный стиль из Generic.xaml и переместите его в Dictionary2. Затем объедините Dictionary2 с Dictionary1 и Dictionary1 с Generic следующим образом:

<!--Generic.xaml-->
<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="pack://application:,,,/Themes/Dictionary1.xaml"/>
</ResourceDictionary.MergedDictionaries>

<!--Dictionary1.xaml-->
<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="Dictionary2.xaml"/>
</ResourceDictionary.MergedDictionaries>

Затем добавьте экземпляр CustomControl1 в сетку MainWindow. (Эта часть необходима для воспроизведения проблемы. Проект всегда компилируется нормально - проблема проявляется только во время выполнения, и на словари нужно ссылаться.)

В Dictionary1.xaml я объединяю другой dict в той же папке , поэтому работает простой Source = "Dictionary2.xaml". Однако в Generic.xaml я должен использовать абсолютный URI.

public class BusinessPlan {
    public Guid Id { get; set; }
    public int Year { get; set; }
    public string CustomerCode { get; set; }
    public PreviousYearData PreviousYearData {get; set;}
}

public class PreviousYearData {
    public Guid Id { get; set; }
    public int Year { get; set; }
    public string CustomerCode { get; set; }
    // many more fields
}

Данные в таблице PreviousYearData предварительно заполняются в начале года до создания BusinessPlan, поэтому я не знаю, каким будет Id BusinessPlan, и не могу создать нормальный внешний ключ. Я думаю, что хочу присоединиться к данным о предыдущем году в BusinessPlan на основе двух столбцов Year и CustomerCode. Возможно ли это с помощью Fluent NHibernate? Есть ли другой подход, который имеет больше смысла?

8
задан Brad Crandell 16 September 2010 в 21:05
поделиться