2016-05-02 45 views
0

ModalPageクラスを作成しようとしていますが、うまくいきますが、私はModalPageを特化するために4つのサブクラスを作成したいと考えています。
ScreenshotUWPは私のUserControlから継承します

UserControl(XAML + C#の)からマイModalPage継承。私のModalPageを継承するサブクラスでは、特定のコンテンツとタイトルをパラメータ化する必要があります。

私が思う、最善の方法は、ContentDialogクラスのように行うことですとContentDialog1 : ContentDialog whith AC#クラスやXAMLページがあります。

<ContentDialog> 
    <Grid> 
    </Grid> 
</ContentDialog> 

しかし、それは使用していますので、私は、私のUserControlから継承することはできませんXAML。 UserControlの代わりにカスタムコントロール(Controlから継承)を作成する必要がありますか?

+1

のみの場合:

public sealed partial class ModalPage : UserControl { public ModalPage() { this.InitializeComponent(); } public static readonly DependencyProperty ModalTitleProperty = DependencyProperty.Register("ModalTitle", typeof(object), typeof(ModalPage), new PropertyMetadata(null)); public object ModalTitle { get { return GetValue(ModalTitleProperty); } set { SetValue(ModalTitleProperty, value); } } public static readonly DependencyProperty ModalContentProperty = DependencyProperty.Register("ModalContent", typeof(object), typeof(ModalPage), new PropertyMetadata(null)); public object ModalContent { get { return GetValue(ModalContentProperty); } set { SetValue(ModalContentProperty, value); } } } 

はその後、我々のようなページでこのModalPageを使用することができ、次は簡単なサンプルですあなたのタイトルとコンテンツが変化している、私はユーザーコントロールを作成することを提案し、2つの依存プロパティを公開して値を設定する親ページのタイトルとコンテンツの –

+0

ありがとう!私は私のuserControlのコンテンツの値を設定する依存プロパティを公開する場合、私は多くのコンテンツを持って、コンテンツは別のUserControlにすることができますか? – sasukaru

答えて

1

私のuserControlのコンテンツの値を設定するための依存関係プロパティが公開されている場合、そのコンテンツは別のUserControlですか?

ええ、これを実装するのにContentPresenterを使用できます。 XAMLで

:コードビハインドで

<UserControl x:Class="UWP.ModalPage" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:local="using:UWP" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      d:DesignHeight="300" 
      d:DesignWidth="400" 
      mc:Ignorable="d"> 

    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto" /> 
      <RowDefinition Height="*" /> 
     </Grid.RowDefinitions> 
     <ContentPresenter x:Name="Title" 
          HorizontalAlignment="Center" 
          HorizontalContentAlignment="Center" 
          Content="{x:Bind ModalTitle}" /> 
     <ContentPresenter x:Name="Content" Grid.Row="1" Content="{x:Bind ModalContent}" /> 
    </Grid> 
</UserControl> 

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <local:ModalPage ModalTitle="TITLE"> 
     <local:ModalPage.ModalContent> 
      <local:MyUserControl /> 
     </local:ModalPage.ModalContent> 
    </local:ModalPage> 
</Grid> 
+0

あなたの答えをありがとう、それは動作します。 My ModalClassから継承することが可能かどうかを知りたいですか?私のソリューションは難しいようですが、サブクラスのxamlにコンテンツとタイトルを定義する方が好きです。 – sasukaru

+0

あなたの 'ModalClass'から継承することが可能です。しかし、通常、ユーザーコントロールを作成せずに、別のユーザーコントロールから継承します。あなたがデフォルトで見ることができるように、 'UserControl'から継承したクラスは' sealed'です。そして、Kiran Paul氏のように、タイトルとコンテンツだけを変更したい場合は、 'UserControl'に2つの依存関係プロパティを公開すれば十分です。サブクラスのxamlにコンテンツとタイトルを定義したい場合は、ユーザーコントロールの代わりにカスタムコントロールを作成することをお勧めします。 –

+0

ありがとう、今私は依存関係プロパティを使用して、この質問はc#とxaml = – sasukaru

関連する問題