2015-03-24 5 views
0

У меня есть пользовательский элемент управления WPF, встроенный в приложение, которое наследует стиль приложения. Я разработал User Control с учетом стиля WPF по умолчанию и не определяет его собственные ресурсы/стили. Однако в результате наследования стиля хост-приложения это выглядит неправильно. Я бы предпочел, чтобы User Control просто использовал стиль WPF по умолчанию. Есть ли простой способ сделать это?WPF UserControl: используйте стиль 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

отправьте свой код/​​XAML? –

+0

Вы пробовали ''? – Sheridan

+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 с помощью mergeddictionary в словаре ресурсов в app.xaml

Смежные вопросы