WinRT でカスタム コントロールを作成する方法に関するチュートリアルを探していたのですが、質問があります。
左側に画像があり、右側にいくつかの TextBlocks があるグリッドなど、いくつかのものを含む単純なコントロールを作成したいとしましょう。
つまり、次のような単純なものです。
<Grid Height="100">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.3*"/>
<ColumnDefinition Width="0.7*"/>
</Grid.ColumnDefinitions>
<Image Source"/Assets/someRandomImage.png"/>
<StackPanel Grid.Column="1"
VerticalAlignment="Center">
<TextBlock Text="Some text"
Margin="10,0,10,0"
FontSize="24"
FontWeight="SemiLight"
TextTrimming="CharacterEllipsis"/>
<TextBlock Text="Some random description..."
Margin="10,5,10,0"
FontSize="18"
FontWeight="Light"
Foreground="Gray"
TextWrapping="Wrap"
TextTrimming="CharacterEllipsis"/>
</StackPanel>
</Grid>
このコンテンツを使用して UserControl を作成し、UI の作業中に XAML デザイナーで表示できるようにし、UserControl コード ビハインドにすべてのプロパティと DependencyProperties を追加します。
その後、別の方法として Template コントロールを使用することがわかったので、Control クラスから継承するクラスを作成し、上記の XAML コードをテンプレートとして使用してカスタム コントロールに適用し、すべての残りのロジックはそこにあります。
もちろん、x:Name プロパティをコントロール内のいくつかの UIElements に追加して、UIElements とやり取りできるようにする必要もありますが、おわかりいただけたでしょうか。
これらの 2 つの方法のいずれかを使用してもよいのか、それとも特に 1 つを使用する方がよいのか、またその理由は? また、Designer ウィンドウで UserControls を見ることができるので、UserControls を使用するのが好きです。代わりに、テンプレートではそれを行うことができません。アプリを実行してコントロールのインスタンスを作成し、それが何であるかを確認する必要があります。実際に似ています。
ご協力ありがとうございます。この疑問を持っているのは私だけではないと思います。この質問が他の人にも役立つことを願っています:D
セルジオ