0

我在应用程序资源中定义了以下资源

<Application.Resources>
    <Style x:Key="gridTextBox">
        <Setter Property="TextBox.Margin" Value="0,5,5,5"/>
    </Style>
</Application.Resources>

并且资源照常应用于主窗口的文本框

<TextBox Name="textBox1" Style="{StaticResource gridTextBox}"/>

我遇到的问题是,如果我通过 Unity 引导程序启动应用程序,应用程序会在文本框资源上引发 XamlParseException。但是,如果我在 app.xaml 上使用 startupUri,则应用程序会按预期加载。我的引导程序看起来像这样

public class Bootstrapper : UnityBootstrapper
{
    protected override void InitializeShell()
    {
        base.InitializeShell();
        App.Current.MainWindow = (Window)Shell;
        App.Current.MainWindow.Show();
    }

    protected override DependencyObject CreateShell()
    {
        var shell = new MainWindow();
        return shell;
    }
}

而我的应用启动如下

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);
        new Bootstrapper().Run();
    }
}

我错过了什么?

4

1 回答 1

1

将您的 App.xaml 更改为此:

<Application x:Class="UnityBootstrapperTest.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             >
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary>
                    <Style x:Key="gridTextBox">
                        <Setter Property="TextBox.Margin" Value="0,5,5,5"/>
                    </Style>
                </ResourceDictionary>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>
于 2012-07-15T12:19:20.887 回答