C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

[MAUI]XAML Style定義について

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■103318 / inTopicNo.1)  [MAUI]XAML Style定義について
  
□投稿者/ よもやま(よもぎ工房) (1回)-(2024/09/03(Tue) 11:12:26)

分類:[.NET 全般] 

[環境]
OS: Windows 11 Pro(64 bit)
Tool: Visual Studio Community 2022(64bit) Ver 17.11.2
ソリューション:MAUI
プロジェクト:MAUI アプリケーション
[質問前情報]【注意】X1,Y1,X2,Y2, LineStyle定義などの値は適当です。
Buttton内のAbsoluteLayoutにてShapesコントロールである、Lineを使って下記のように定義しています。
        <AbsoluteLayout Grid.Row="1" x:Name="Arrow1" >
            <Line X1="10" Y1="250" X2="500" Y2="250"  Style="{StaticResource LineStyle1}" />
            <Line X1="350" Y1="50" X2="500" Y2="250"  Style="{StaticResource LineStyle1}" />
            <Line X1="350" Y1="450" X2="500" Y2="250"  Style="{StaticResource LineStyle1}" />
        </AbsoluteLayout>
<<質問事項>>
Style定義に置き換えたく
    <Style TargetType="AbsoluteLayout" x:Key="test1" >
        <Setter Property="HeightRequest" Value="512" />
        <Setter Property="WidthRequest" Value="512" />
        <Setter Property="" >
            <Setter.Value>
                <Line X1="350" Y1="50" X2="500" Y2="450"  Style="{StaticResource LineStyle3}" />
            </Setter.Value>
        </Setter>
    </Style>
としようとしていますが、内容させたいプロパティが見つかりません。Setter Property="Children"では実行時にアクセスできないとエラーが発生します。
AbsoluteLayoutの子要素を定義する際、対象となるプロパティは何になるのでしょうか?
そもそも考え違いしていましたら合わせてご指摘いただければ幸いでございます。
<<最終目標とする事項>>
AbsoluteLayout内の記載内容を汎用化させ(リソースディクショナリに内包させ、DLL化する)、他のプロジェクトへ流用させたい。
<他検討した事項>
GraphicViewを用いて動的に描画させることも考慮しましたが、用いるデザインはC#コードではなくXAMLデザイン定義で納めたかった。

引用返信 編集キー/
■103319 / inTopicNo.2)  Re[1]: [MAUI]XAML Style定義について
□投稿者/ よもやま(よもぎ工房) (2回)-(2024/09/04(Wed) 14:22:13)
【中間ご連絡】
ControlTemplateを調べていく途上、ひとまずContentViewを持つxamlにて代用もしくは代替できないか、試行錯誤はじめました。

引用返信 編集キー/
■103320 / inTopicNo.3)  Re[2]: [MAUI]XAML Style定義について
□投稿者/ よもやま(よもぎ工房) (3回)-(2024/09/05(Thu) 09:59:19)
【ご報告】
レイアウト内のデザインの汎用化について、ControlTemplateを用いて解決となりました。
お騒がせいたしまして、誠に申し訳ありませんでした。試行錯誤のソース抜粋を掲載させていただきます。
〜〜〜〜
<!--  MainPage.xaml(抜粋) -->
        <ScrollView Grid.Row="1"  VerticalScrollBarVisibility="Always" >
            <VerticalStackLayout>

                <Label HorizontalOptions="Center">test</Label>
                <customControlTest:LedCellTest01
                    FillColor="Red"
                    StrokeColor="White"
                    LedStrokeThickness="10"
                    ControlTemplate="{StaticResource LedCellTest01ControlTemplate}" HorizontalOptions="Center" />

            </VerticalStackLayout>
        </ScrollView>
<!-- LedCellTest01.xaml(抜粋)  -->
    <ContentView.Resources>
        <local:ColorToSolidColorBrushConverter x:Key="ColorConverter" />
        <!-- -->
        <ControlTemplate x:Key="LedCellTest01ControlTemplate">
            <AbsoluteLayout 
                BindingContext="{Binding Source={RelativeSource TemplatedParent}}">
                <Ellipse 
                    Fill="{Binding FillColor, Converter={StaticResource ColorConverter}}" 
                    Stroke="{Binding StrokeColor, Converter={StaticResource ColorConverter}}" 
                    StrokeThickness="{Binding LedStrokeThickness}"
                    WidthRequest="250" HeightRequest="250"
                    HorizontalOptions="Start" />
            </AbsoluteLayout>
        </ControlTemplate>
    </ContentView.Resources>

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ