Как определить, правильно ли загружен ResourceDictionary - PullRequest
0 голосов
/ 25 мая 2010

Как мне узнать (через отладчик, правильно ли загружаются ресурсы моего приложения). Я пытался (в F #)

type MyApp() as this =
    inherit Application() 
        do Application.LoadComponent(this, new System.Uri("/FSSilverlightApp;component/App.xaml", System.UriKind.Relative))  

    let cc = new ContentControl()

    let mainGrid : Grid = loadXaml("MainWindow.xaml")
    let siteTemplate : Grid = mainGrid 

    let txt : TextBlock = siteTemplate ? txt

    do
        this.Startup.Add(this.startup)
        let mutable s = "Items: "
        s <- s + this.Resources.Count.ToString()

возвращает ноль. Хотя я почти уверен, что приложение загружает ресурс, потому что, если я изменяю путь в App.xaml - я получаю исключения во время выполнения. Другие повторяющиеся фрагменты:

У меня есть следующий app.xaml

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
             x:Class="Module1.MyApp">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/FSSilverlightApp;component/TransitioningFrame.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

и шаблон контента:

<</p>

ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"  
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ControlTemplate x:Key="TransitioningFrame" TargetType="navigation:Frame">
        <Border Background="{TemplateBinding Background}"
                BorderBrush="{TemplateBinding BorderBrush}"
                BorderThickness="{TemplateBinding BorderThickness}"
                HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
            <ContentPresenter Cursor="{TemplateBinding Cursor}"
                          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                          Margin="{TemplateBinding Padding}"
                          VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                          Content="{TemplateBinding Content}"/>
        </Border>
    </ControlTemplate>
</ResourceDictionary>

1 Ответ

1 голос
/ 25 мая 2010

Чтобы увидеть, какие объединенные словари загружены, используйте окно просмотра отладчика или код для просмотра:

Application.Current.Resources.MergedDictionaries.Count
Application.Current.Resources.MergedDictionaries[0].Count
etc...

Если словарь ресурсов не загружается, возможно, это проблема с исходным путем, по которому вы переходите ...

<ResourceDictionary Source="/FSSilverlightApp;component/TransitioningFrame.xaml" />

Ваш синтаксис выглядит правильно для сборки с именем FSSilverlightApp и для файла TransitioningFrame.xaml в корне проекта / сборки, поэтому убедитесь, что файл XAML находится в этом месте .

Если вы загружаете словарь ресурсов из той же сборки, просто используйте относительный путь без синтаксиса " assembly; component / ". Я всегда помещаю свои словари ресурсов в папку «Ресурсы» (соглашение о шаблонах Silverlight) и обращаюсь к файлам без косой черты, как в ...

<ResourceDictionary Source="Assets/Styles.xaml" />

Удачи,
Джим МакКарди, YinYangMoney и Face to Face Software

...