1

我有一个 WPF 页面,我的样式如下:

WPF 页面示例

当我将源设置为 WPF 页面时,它看起来像是在加载。但是,阴影背景样式消失了。

WPF 帧内页面示例

该按钮只是主窗口上的一个测试。背景保留在 Window 中,并且不继承 Page 背景。

有任何想法吗?

框架:

<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还是在 ? 的父母之一中Page

请看这里:

Isolated读到这意味着只有在将其放入 App.xaml 时,由于托管行为,该样式才会被继承。

至于为什么它在您启动时起作用,但在您更改帧源之后却不起作用......这只是一个猜测,但它可能只是一个错误,或者由于某种原因隔离在那时没有激活。

如果将样式放在 App.xaml 中不起作用或不实用,那么您可以将Style内部ResourceDictionary定义在一个单独的 .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>

使用合适的“包”URL 来引用您的 XAML 资源字典,具体取决于它是松散文件还是组件/程序集的一部分。

一些链接:

于 2013-02-05T13:20:21.203 回答