我在应用程序中嵌入了WPF用户控件,它继承了应用程序的样式。我在设计用户控件时考虑了默认的WPF风格,并没有定义自己的资源/样式。但是,由于继承了宿主应用程序的样式,它看起来并不正确。如果用户控件只使用默认的WPF样式,我更喜欢。有没有一种简单的方法可以做到这一点?
UserControl本身包含System.Windows.Controls.Frame
,引用System.Windows.Control.Page
:
<UserControl x:Class="OrderParcelAddInPrototype.WpfControls.Controls.OrderParcelControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="450">
<Frame Source="/OrderParcelAddInPrototype.WpfControls;component/Pages/MainPage.xaml" />
</UserControl>
UserControl
或Page
都没有定义自己的风格。
<Page x:Class="OrderParcelAddInPrototype.WpfControls.Pages.StartPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="450" Title="Main Page">
<ScrollViewer VerticalScrollBarVisibility="Auto">
<StackPanel VerticalAlignment="Top" MaxWidth="350" CanVerticallyScroll="True"
ScrollViewer.CanContentScroll="True">
<!-- Removed for brevity -->
</StackPanel>
</ScrollViewer>
</Page>
答案 0 :(得分:0)
在usercontrol资源中定义usercontrol样式,并在用户控件中应用该样式
<UserControl x:Class="MyNamespace.MyUserControl"
...
Style="{DynamicResource ResourceKey=MyUserControlStyle}">
<UserControl.Resources>
...
<Style x:Key="MyUserControlStyle" TargetType="{x:Type UserControl}">
</Style>
</UserControl.Resources>
否则,您可以使用合并您的usercontrol的资源字典 app.xaml中资源字典中的mergeddictionary