0

アプリケーションのスタイルを継承しているアプリケーションに埋め込まれた 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>
4

1 に答える 1

0

ユーザーコントロールリソース内でユーザーコントロールスタイルを定義し、そのスタイルをユーザーコントロールに適用します

 <UserControl x:Class="MyNamespace.MyUserControl"
         ...
         Style="{DynamicResource ResourceKey=MyUserControlStyle}">
<UserControl.Resources>
    ...
    <Style x:Key="MyUserControlStyle" TargetType="{x:Type UserControl}">

    </Style>
</UserControl.Resources>

それ以外の場合は、app.xaml のリソース ディクショナリで mergeddictionary を使用して、ユーザー コントロールのリソース ディクショナリをマージできます。

于 2015-06-06T17:42:02.450 に答える