1

次のようにスタイルを設定した WPF ページがあります。

WPF ページの例

ソースを WPF ページに設定すると、読み込まれるように見えます。ただし、ハッチングされた背景スタイルは消えます。

フレーム内の WPF ページの例

ボタンは、メイン ウィンドウでの単なるテストです。背景はウィンドウのままで、ページの背景は継承されません。

何か案は?

フレーム:

<Frame Source="{Binding ProductFrameSource}" Name="frameProducts" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Grid.Column="0" Grid.RowSpan="2" />

private Uri _ProductFrameSource = new Uri("pack://application:,,,/<omitted>.<omitted>.UI;component/Views/Products/<omitted>/Products_<omitted>.xaml");
        /// <summary>
        /// Gets or sets a property indicating the current product page to display
        /// </summary>
        public Uri ProductFrameSource
        {
            get { return _ProductFrameSource; }
            set
            { 
                _ProductFrameSource = value;
                RaisePropertyChanged("ProductFrameSource");
            }
        }

ページ スタイル:

<Style TargetType="{x:Type Page}">
        <Setter Property="Background">
            <Setter.Value>
                <DrawingBrush TileMode="Tile" Viewport="0 0 40 40" ViewportUnits="Absolute" Viewbox="0 0 100 100" ViewboxUnits="Absolute">
                    <DrawingBrush.Drawing>
                        <DrawingGroup>
                            <GeometryDrawing Brush="#FF1C1C1C" Geometry="M 0 0 L 100 0 L 100 100 L 0 100 Z" />
                            <GeometryDrawing Geometry="M  -10 77.5 L 22.5  110
                                               M  -10 52.5 L 47.5  110
                                               M  -10 27.5 L 72.5  110
                                               M  -10  2.5 L 97.5  110
                                               M  2.5  -10 L  110 97.5
                                               M 27.5  -10 L  110 72.5
                                               M 52.5  -10 L  110 47.5 
                                               M 77.5  -10 L  110 22.5">
                                <GeometryDrawing.Pen>
                                    <Pen Brush="#FF908B91" Thickness=".5" />
                                </GeometryDrawing.Pen>
                            </GeometryDrawing>
                        </DrawingGroup>
                    </DrawingBrush.Drawing>
                </DrawingBrush>
            </Setter.Value>
        </Setter>
    </Style>
4

1 に答える 1

1

Pageスタイルをどこで定義していますか? それは?App.xamlの親の 1 つにありPageます。

こちらをご覧ください:

Isolatedホスティング動作のために App.xaml に配置されている場合にのみスタイルが継承されることを意味することを読んでください。

起動時に機能するのに、フレームソースを変更した後に機能しない理由について....これは単なる推測ですが、単なるバグであるか、何らかの理由でその時点でアイソレーションがアクティブになっていない可能性があります。

Style を App.xaml に配置してもうまくいかないか実用的でない場合は、別のStyle.XAMLResourceDictionaryファイルで定義されたを配置してから、共有スタイルを含む .XAML にマージする をPage作成します (またはResourceDictionaryコード ビハインドで同様のことを行い、ページの .Resources ディクショナリにスタイルを配置します)。

FrameProductsPageStyle.xaml:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">    
<Style TargetType="{x:Type Page}">
        <Setter Property="Background">
            <Setter.Value>
                <DrawingBrush TileMode="Tile" Viewport="0 0 40 40" ViewportUnits="Absolute" Viewbox="0 0 100 100" ViewboxUnits="Absolute">
                    <DrawingBrush.Drawing>
                        <DrawingGroup>
                            <GeometryDrawing Brush="#FF1C1C1C" Geometry="M 0 0 L 100 0 L 100 100 L 0 100 Z" />
                            <GeometryDrawing Geometry="M  -10 77.5 L 22.5  110
                                               M  -10 52.5 L 47.5  110
                                               M  -10 27.5 L 72.5  110
                                               M  -10  2.5 L 97.5  110
                                               M  2.5  -10 L  110 97.5
                                               M 27.5  -10 L  110 72.5
                                               M 52.5  -10 L  110 47.5 
                                               M 77.5  -10 L  110 22.5">
                                <GeometryDrawing.Pen>
                                    <Pen Brush="#FF908B91" Thickness=".5" />
                                </GeometryDrawing.Pen>
                            </GeometryDrawing>
                        </DrawingGroup>
                    </DrawingBrush.Drawing>
                </DrawingBrush>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

ページの XAML で:

<Page>
<Page.Resources>
    <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary 
            Source="FrameProductsPageStyle.xaml">
        </ResourceDictionary>
    </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Page.Resources>
</Page>

適切な "pack" URL を使用して、XAML リソース ディクショナリを参照します。これは、それがルーズ ファイルであるか、コンポーネント/アセンブリの一部であるかに応じて異なります。

いくつかのリンク:

于 2013-02-05T13:20:21.203 に答える