atelier:mitsuba

i love UI/UX, Blend, XAML, Behavior, P5, oF, Web, Tangible Bits and Physical computing. なにかあればお気軽にご連絡ください。atelier@c-mitsuba.com

Uno Platformを使ってXamarinで真っ当なXAMLを書きたい その5 ビルドの通るStyle 通らないStyle

提題通り、テンプレート最初にあるXAMLにStyleを当ててみます。

まずはStyleじゃなくて、直に追加。

Foreground="Red"

f:id:c-mitsuba:20191129064842p:plain

ん、うごきますね。


次に、Style化します。

        <Style TargetType="{x:Type TextBlock}">
            <Style.Setters>
                    <Setter Property="Foreground" Value="Blue"/>
                </Style.Setters>
        </Style>

f:id:c-mitsuba:20191129065038p:plain
f:id:c-mitsuba:20191129065118p:plain

お、ビルドこけましたね。
エラー:x:Typeが見つかりませんでした。
そういえばWPFにはx:Typeあるけど、UWPにはなかったなっと。


じゃあ[x:Type] 辞めましょう

        <Style TargetType="TextBlock">
            <Style.Setters>
                    <Setter Property="Foreground" Value="Blue"/>
                </Style.Setters>
        </Style>

f:id:c-mitsuba:20191129065309p:plain

うんうん、動きましたね。


ちょっと待って、それiOS / Androidでも動くの???
f:id:c-mitsuba:20191129065352p:plain

iOSにするとThemeResourceがないって言われますね。
ここでUno Platformのアーキテクチャを思い出してみます。

f:id:c-mitsuba:20191129071613p:plain

UWPプロジェクトをビルドする場合って、Uno Platformを通ってないんですよ!
なるほどなるほど、こういうところで差が出てきちゃうな。
じゃあ両方にビルド通すStyleにするには、、、、


Styleにx:Keyをつけてみる
ついでに画面真ん中に持っていこう。

            <Style.Setters>
                    <Setter Property="Foreground" Value="Blue"/>
                    <Setter Property="HorizontalAlignment" Value="Center"/>
                    <Setter Property="VerticalAlignment" Value="Center"/>
                </Style.Setters>
        </Style>

f:id:c-mitsuba:20191129070255p:plain
f:id:c-mitsuba:20191129072019p:plain

いけたいけたー、こういうクセを抑えていけば大丈夫そう。
実行したら落ちたとかじゃないから、安心といえば安心だけど、ビルドが通らなかったときのエラーメッセージはそんなに親切なものじゃないかな。
いっぱいだーーーっと書いて、あ、通らないってなると該当箇所を探すのが大変そう。まぁでも慣れれば行けるかも?かも??