WPF делится ресурсами с элементами управления - PullRequest
0 голосов
/ 05 апреля 2011

В моем приложении WPF объединены 2 словаря (базовый dict объединен с skin dict). Он отлично работает в MainWindow, но когда я добавил новое окно WPF, он не может получить доступ к StaticResource.

Это код нового окна:

<Window x:Class="Sc2ReplayMonkey.PleaseWaitWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
        xmlns:local="clr-namespace:Sc2ReplayMonkey"
        Title="PleaseWaitWindow" Height="300" Width="300">
    <Grid Style="{StaticResource WindowBackground}">
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <TextBlock Style="{StaticResource WindowTextelement}" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center">
            Please wait while the replays            
        </TextBlock>
        <TextBlock Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center">
            are parsed and serialized
        </TextBlock>
    </Grid>
</Window>

Я получаю сообщение об ошибке "Не удается найти ресурс с именем" WindowBackground ". Он определяется в коже как:

<Style x:Key="WindowBackground" TargetType="{x:Type Grid}">
    <Setter Property="Background" Value="Black" />
</Style>

Что я пропустил?

Ответы [ 2 ]

0 голосов
/ 27 августа 2011

Это решило проблему, я просто добавил строку в конструкторе PleaseWaitWindow: Resources = main.Resources;главное из которых MainWindow

0 голосов
/ 05 апреля 2011

Я думаю, вам нужно добавить

 Resources.MergedDictionaries.Add(resources); 

в вашем классе App.cs один раз, например, в методе Initialize (). Тогда ваш словарь будет доступен из любых окон.

...