MahApps.Metro の DropDownButton でのエラー

メモ:

WPFプロジェクトで、MahApps.Metro の DropDownButton使っていたら実行時エラーが出た。(動作は問題ない?)

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ItemsControl', AncestorLevel='1''. BindingExpression:Path=HorizontalContentAlignment; DataItem=null; target element is 'MenuItem' (Name=''); target property is 'HorizontalContentAlignment' (type 'HorizontalAlignment')
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ItemsControl', AncestorLevel='1''. BindingExpression:Path=VerticalContentAlignment; DataItem=null; target element is 'MenuItem' (Name=''); target property is 'VerticalContentAlignment' (type 'VerticalAlignment')

MahApps というよりWPF関連の既知の動作っぽい。

MenuItemを対象に Style設定をして回避。

<mah:DropDownButton>

    <mah:DropDownButton.ItemContainerStyle>
        <Style BasedOn="{StaticResource {x:Type MenuItem}}" TargetType="{x:Type MenuItem}">
            <Setter Property="HorizontalContentAlignment" Value="Left" />
            <Setter Property="VerticalContentAlignment" Value="Center" />
        </Style>
    </mah:DropDownButton.ItemContainerStyle>

</mah:DropDownButton>

参考:

tawamuredays.blog.fc2.com

MahApps:ToggleSwitch で 一部の色を変更

メモ:

状況

mahapps の ToggleSwitch を使っていたら、ONの時の表示がおかしくなってしまった。

MahApps.Metro - ToggleSwitch

実態はあるが、白くなって見えなくなっている。

f:id:kawaishi2:20220302122609p:plain

最初はきちんと表示されていたから、別で変なコードを書いた影響だと思う(が、分からん)。

回避

これ ↓ を参考に色を設定

github.com

ToggleSwitch に背景色を設定

f:id:kawaishi2:20220302122609p:plain

// 元:
<mah:ToggleSwitch IsOn="True" />
<mah:ToggleSwitch IsOn="False" />

↓↓↓↓

f:id:kawaishi2:20220302123156p:plain

 <mah:ToggleSwitch IsOn="True">

    <mah:ToggleSwitch.Resources>
        <SolidColorBrush x:Key="MahApps.Brushes.ToggleSwitch.FillOn" Color="{StaticResource MahApps.Colors.Accent}" />
    </mah:ToggleSwitch.Resources>

    </mah:ToggleSwitch>

<mah:ToggleSwitch IsOn="False" />

Microsoft Developer Day 視聴メモ BS15

Microsoft Developer Day 視聴メモ BS15

.NET アップグレード アシスタントで簡単にできます! .NET Framework アプリの .NET 6 へのマイグレーション BS15

視聴メモ:

導入

  • 移行計画をステークホルダーと共有
  • 知見が無い段階だと、移行計画は困難

  • ツールを活用して移行計画や手順を作成

手順と問題点

  • 移行計画(調査/作業のリストアップ/作業量の見積もり)
  • 移行実施(コード修正)
  • テスト

  • 問題点:移行計画の段階では精度が低い > ツール活用しよう

ツール活用

  • Net portability analyzer

    • まだ .net5 まで(これでも ほぼカバーできる)
      • ほどなく .net6 対応される?
  • NET Upgrade Assistant

    • 変換
  • 上記以外は手作業

手順

  1. Net portability analyzer で確認
  2. .NET Upgrade Assistant で変換
  3. 移行計画作成
  4. 移行実施
  5. テスト

Windows Form 移行デモ

  • NET Upgrade Assistant ステップごと

end

Microsoft Developer Day 視聴メモ BS4

Microsoft Developer Day 視聴メモ BS4

時は来たれり。今こそ .NET 6 へ移行する時 BS4

視聴メモ:

事前

PackageReference 形式

  • package.config → プロジェクトファイル
  • 推移的な依存を削除(依存の依存の・・・)
  • package.config → PackageReference は 右クリックから可能

SDKスタイル

依存先の調査

  • Nuget/プロジェクト参照/非Nugetパッケージ

  • Nuget

    • .NetStandard or .NetCoreの依存があれば (たぶん).Net6で稼働
    • ライブラリの破壊的変更のエラーは厄介なことが多い
    • .Net6移行とライブラリ移行の混在は厄介
  • プロジェクト参照

    • 移行不要の可能性あり→互換モード
    • .Net standard2.0 として参照
  • 非Nugetパッケージ(DLLのみ)

    • 開発元に聞く
    • .Net portability analyzer で解析
    • 分からなかった場合は、別を検討
    • .Net portability analyzer 使用例
      • 現状:.net5への移行をチェックしてくれる

移行

.Net6への移行

  • プロジェクトの変更は簡易

依存先のアップグレード

  • Nugetをあげる&エラー修正
  • API(エラー)への対応
  • Visual Studioであれば警告出る
  • 使用てきないAPI/例外をスローするAPI → 再実装
  • 挙動が違うAPI → 修正

移行ツール

  • .NET Upgrade Assistant
  • Xamarin 今後対応予定がある
  • ここまで紹介してきたものを、ほぼ全て対応してくれる
  • 各処理を個別にスキップも可能
  • Nugetの更新は、使用しない(スキップ)がおすすめ。他のエラーと混ざると厄介(司会意見)

フレームワーク別に説明

WindowsForm/WPF

  • Windows互換性パッケージ参照を追加

ASP.NET Core MVC

  • ASP.NET Core MVC2.2 に一旦 移行する。(2.2 は互換性高い。手動移行)
  • Upgrade Assistantで、 Core2.2へ
  • 手動でcore3.1 に
  • Upgrade Assistantで 最終形に

Xamarin Forms

  • 2022-Q2 まで待って

Xamarin ネイティブ

  • Vsプレビューならテンプレートがある(司会:たぶんこれかな?)

ASP.Net WEB Form

  • Blazor への移行が推奨
  • Blazor Server がおすすめ(ASP.Net WEB Form と相性良い)
  • Blazor用のWEBFormの移植(OSS)がある

WCF

  • gRPC への移行(司会おすすめ)
  • CoreWCFへの移行

end

Microsoft Developer Day 視聴メモ BS3

Microsoft Developer Day 視聴メモ BS3

Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介 BS3

視聴メモ:

  • .NET6 に含まれる

  • .NET6 に含まれない

    • WinUI
    • その他API
  • UIレイヤーに何を使うのか

Windows Forms

  • デザイナーはプレビュー(現時点)
  • Github上で改善が継続
  • HighDPI/PreMonitorDPI 対応にやや難あり
  • 複雑なレイアウトは大変
  • デモ
  • プレビュー機能は 環境設定から(プレビュー)ONにできる

WPF

  • OSコントロールではなく自前で描画
  • XAML
  • C# ロジック記述
  • レイアウトが柔軟

MAUI

  • 機能が最大公約数的なものになる
  • Windowsアプリを作るだけであれば、他の選択肢でもよい
  • 2022-Q2 にリリース予定
  • BlazorWebView
  • デモ

WindowsAppSDK

  • メモが間に合わず

司会者のおすすめ

  • 現時点では、(現在)WPF → (将来)WindowsAppSDK がおすすめ?
  • WinUI は今後注力される。(Windows11にも なじむ)
  • なるべくUIとロジックは分離しておくと移行も楽。

end

Microsoft Developer Day 視聴メモ BS11

Microsoft Developer Day: 毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること BS11

視聴メモ:

  • クラウド時代
  • 2022/4月5月 には .netCore3.1, .Net5 も EOL

4.8継続

6.0使うケース

  • 新規/クラウドネイティブ/WEB+モバイル/標準記述を活用(gRPC

移行デモ

  • .netframework WindowsForms > .net6 WindowsFroms > .asp core
  • upgrade assistant
  • .NET Core 用 WCF dotnet-svcutil ツール
  • WCF移行先 gRPCが推奨。
  • .net framework継続なら、コンテナー等でインフラも含めて維持/運用する必要あり

WEB移行:

  • upgrade assistantでは移行できない
  • データベース>data migration assistant
  • モデル>なるべく再利用
  • ビジネスロジック>なるべく再利用
  • デザイン/UI > 新たに実装

  • 移行前に、リファクタリングした方が良い

  • Cloud adaption framewrok
  • well-architected framework

スムーズな移行

  • CI/CD/負荷テスト/モニタリング
  • DevOpsプラクティスの活用

環境

  • Azure load testing
  • Jmeter>CI/CDに統合
  • デモ

WEB移行デモ

  • DB移行
  • data migration assistant
  • 移行スクリプト/データ移行

セキュリティ

  • Azure Key Vault デモ

end