0

最近、Windows Phone 用の Visual Studio Express 2012 と共に Windows 8 をインストールしました。ただし、新しい Windows Phone アプリ プロジェクト (7.1、ただし 8 にも同じ問題があります) を開始して MainPage.xaml ファイルを開くと、デザイナー ウィンドウに次のようなエラーが表示されます。

XamlParseException: Cannot find a Resource with the Name/Key PhoneBackgroundBrush [Line: 47 Position: 111]

MainPage.xaml ファイルは次のとおりです。

<phone:PhoneApplicationPage 
    x:Class="PhoneApp1.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations="Portrait" Orientation="Portrait"
    shell:SystemTray.IsVisible="True">

    <!--LayoutRoot is the root grid where all page content is placed-->
    <Grid x:Name="LayoutRoot" Background="Transparent">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <!--TitlePanel contains the name of the application and page title-->
        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
            <TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>
            <TextBlock x:Name="PageTitle" Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
        </StackPanel>

        <!--ContentPanel - place additional content here-->
        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"></Grid>
    </Grid>

</phone:PhoneApplicationPage>

App.xaml ファイルには次のものが含まれます。

<Application 
    x:Class="PhoneApp1.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"       
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone">

    <!--Application Resources-->
    <Application.Resources>
    </Application.Resources>

    <Application.ApplicationLifetimeObjects>
        <!--Required object that handles lifetime events for the application-->
        <shell:PhoneApplicationService 
            Launching="Application_Launching" Closing="Application_Closing" 
            Activated="Application_Activated" Deactivated="Application_Deactivated"/>
    </Application.ApplicationLifetimeObjects>

</Application>

解決策は次のようになります。

プロジェクトソリューション

他のスタイル関連のファイルはどこにもないようです。誰でもこれに光を当てることができますか?それは私を狂わせます。

4

2 に答える 2

1

ふぅ!これを次のように修正しました。

右側のソリューション エクスプローラー パネルでプロジェクトを右クリックします [追加] -> [既存の項目] を選択します ファイル ブラウザーで C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Design\ThemeResources.xaml を選択します [追加] をクリックします' ボタン App.xaml ファイルに、次のセクションを追加して、次のセクションに置き換えます。

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="ThemeResources.Xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

MainPage.xaml でデザイナーを開きます - これで問題なく動作するはずです。これが誰かの時間を少し節約することを願っています!

于 2013-01-16T13:51:42.523 に答える
0

元の ThemesResources.xaml をコピーする代わりに、独自の回答に基づいて、新しいものを作成し、元のものとマージします。

新しいリソース ディクショナリを作成します (例: FixedDictionaryResources.xaml)。Visual Studio では、Windows Phone ページを作成するか、XAML ファイルを作成する他のテンプレートを使用する必要があります。Blend では、リソース ディクショナリを直接作成できます。VS では、すべてのコンテンツを削除して、次のコードを挿入する必要があります。ブレンドに追加するだけです

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <!-- Resource dictionary entries should be defined here. -->
    <SolidColorBrush x:Key="PhoneBackgroundBrush" Color="{StaticResource PhoneBackgroundColor}"/>
</ResourceDictionary>

App.xaml を開き、次のコードを追加して、新しいディクショナリを既定のリソース ディクショナリとマージします。

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Resources/FixingResourceDictionary.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

PhoneBackgroundBrush が見つからないという問題がまだ表示されているページを再度開くと、すべてが機能するはずです。

于 2013-11-17T11:04:53.230 に答える