前提・実現したいこと
UWP初心者です
Visual Studio 2019で作成したUWPアプリを使用しているのですが、
見た目や処理が同じPageが多々でてきますので、
なにかベースになるものを用意し、
そこから派生して、
オリジナルのコンポーネントを作成していこうと思ったのですが、
下記の"該当のソースコード"で確認してみたところ
のような見た目になりました。
継承先(TestGrid2)のボタンだけ表示されるなら、
まだわかるんですが、
なぜか継承元(TestGrid1)の見た目が表示されました。
UWPでxamlを継承することはできないということでしょうか?
Styleなどでテンプレートを定義すれば見た目は何とかなりそうですが、
コードビハインドなどでStyleの内部に定義したものにアクセスしづらいなど
があるのでこの方法では解消できませんでした。
このように見た目と処理をベースから派生させるにはこのように作成すればよろしいでしょうか?
このようなサイトでの質問もまだ慣れておらず、情報不足ありましたら
ご指摘ください。
宜しくお願い致します。
該当のソースコード
ただのテスト用のPage
Page.xaml
C#
1<Page 2 x:Class="TestApp.MainPage" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 xmlns:local="using:TestApp" 6 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 7 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 8 mc:Ignorable="d" 9 Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 10 11 <Grid> 12 <Grid.RowDefinitions> 13 <RowDefinition Height="60*" /> 14 <RowDefinition Height="90*" /> 15 </Grid.RowDefinitions> 16 17 <local:TestGrid2 x:Name="Test_Grid2" 18 VerticalAlignment="Stretch" 19 HorizontalAlignment="Stretch"/> 20 21 </Grid> 22</Page>
継承元グリッド
TestGrid1.xaml
C#
1<Grid 2 x:Class="TestApp.TestGrid1" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 xmlns:local="using:TestApp" 6 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 7 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 8 mc:Ignorable="d"> 9 10 <Grid.ColumnDefinitions> 11 <ColumnDefinition Width="60*" /> 12 <ColumnDefinition Width="90*" /> 13 </Grid.ColumnDefinitions> 14 15 <Button x:Name="TestButton" 16 Content="テスト" 17 Grid.Column="1" 18 VerticalAlignment="Stretch" 19 HorizontalAlignment="Stretch"> 20 21 </Button> 22</Grid>
TestGrid1.xaml.cs
C#
1public partial class TestGrid1 : Grid 2{ 3 public TestGrid1() 4 { 5 this.InitializeComponent(); 6 } 7}
継承先グリッド
TestGrid2.xaml
C#
1<local:TestGrid1 2 x:Class="TestApp.TestGrid2" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 xmlns:local="using:TestApp" 6 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 7 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 8 mc:Ignorable="d"> 9 10 <Grid.ColumnDefinitions> 11 <ColumnDefinition Width="60*" /> 12 <ColumnDefinition Width="90*" /> 13 </Grid.ColumnDefinitions> 14 15 <Button x:Name="TestButton" 16 Content="テスト2" 17 Grid.Column="0" 18 Background="Red" 19 VerticalAlignment="Stretch" 20 HorizontalAlignment="Stretch"> 21 22 </Button> 23</local:TestGrid1>
TestGrid1.xaml.cs
C#
1public partial class TestGrid2 : TestGrid1 2{ 3 public TestGrid1() 4 { 5 this.InitializeComponent(); 6 } 7}
試したこと
・継承先のグリッドと継承元のグリッドの背景色変更
背景が透明じゃないから、表示が上に載ってて見えないのかと思い
Background="Transparent"にしてみましたが、
変化はありませんでした。
補足情報(FW/ツールのバージョンなど)
・OS バージョン Windows10
・Visual Studioのxamlエディター?なら期待できそうな表示になっていたのですが
それを使用しているPage側では表示されていませんでした(アプリ実行時と同じ画面)。
追記
・ライブラリでテンプレートを作成し、アプリ側で使用した際の画面
※回答で作成していただいたコードをそのまま使用した際に表示された画面
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/23 07:50 編集
2020/09/23 08:40
2020/09/23 08:45
2020/09/24 01:57
2020/09/24 05:50