やる気駆動型エンジニアの備忘録

WPF(XAML+C#)の話題を中心に.NET/Android/CI やたまに趣味に関するブログです

C#

(C#/.NET) Fluent Assertions を使ってみる

先日、ChainingAssertion の GitHub ページを見たら2022年に public archive になっていました。 代替手段としてFluent Assertionsというものがリンクにあったので試しに使ってみたので、その内容をメモします。 参考 fluentassertions.com github.com Fluen…

.NET でコードカバレッジを収集&レポートする

.NET6 を使ったアプリの開発中にコードカバレッジの収集とレポートを出力しようとしたのですが、地味に情報がまとまっていなかったので残しておこうと思います。 なお、コードカバレッジにはcoverlet.collector、レポート出力にはReportGeneratorを使用しま…

Azure DevOps拡張機能で自作アプリを呼び出せるかどうか試してみた

Azure DevOps 拡張機能は PowerShell を使用して開発することができますが、ちょっと PowerShell 力が足りないときに .NET 使いたいなーと思うことがありました。 しかし、リファレンス上では .NET アプリを使う方法については記載されていません。なので、…

Azure DevOps REST APIで大量のPull Requestを取得する際の注意点について

先日、Azure Repos で管理しているリポジトリの Complete 済みの全 Pull Request を取得したいという要件があったので Azure DevOps REST API を使いました。 その時、条件の指定方法によっては取得できる Pull Request の数が想定より少ない数しか取得でき…

WPF on .NET Core 3.0アプリをAzure PipelinesでビルドしてAppCenterにリリースする

タイトルまんまです。 2ヶ月ほど前に WPF / WindowsForms に対応した App Center について色々遊んでいましたが、Distribute については .NET Framework だとちょっと面倒な部分があったので .NET Core 3.0 が GA されるまで放置してました。 9月に無事 .N…

(WPF)App Centerでクラッシュ レポートを送る

前回、App Center + WPF を使ってユーザー利用状況を収集する機能を試してみました。 今回はクラッシュ レポートで遊んでみます。 参考資料 docs.microsoft.com 今回はこの資料をベースに進めていきます。 意図的にクラッシュさせる App Center の API をテ…

(WPF)App CenterにWPFが対応したので使ってみた

devblogs.microsoft.com 上記ページでApp Centerに WPF/WinForms が対応したとのことなので早速使ってみました。 私自身これまで App Center を使ったことがなかったため、このエントリでは導入から Analytics までをチュートリアル形式で記載しています。 …

(Azure DevOps)Azure Pipelines で.NET Framework + xUnit のユニットテストの実行と集計方法について

.NET Framework を使ってちょっとしたプログラムを作っていたのですが、ユニットテスト プロジェクトにxUnit を使った場合のAzure Pipelines のタスク設定方法がわからなかったので備忘録として残しておきます。 Azure Pipelines でのテスト タスクは.NET Co…

(WPF)Live Charts をMVVM で使ってみる -円グラフ-

野暮用でグラフを使ったWPF アプリ開発をしたかったので前々から気になってたLive Charts を使ってみました。 私が調べた限りだとLive Charts をMVVM で使うサンプルの数が乏しい(特に"PieChart")ので備忘録がてらここに残しておきます。 Live Charts って…

(WPF)Windows Community Toolkit の MapControl を使ってみた

随分と昔(といっても今年だった気がする)にXAML Islands というキーワードを目にしたのですが、そのパッケージが OSS 化されて WPF でも使用できるとのことなので試しに使ってみました。 XAML Islands って? Windows のデスクトップ アプリケーション開発…

(WPF)タッチキーボードを表示する -その2-

先日、WPF でタッチキーボードを表示する方法について書いたのですが、実際にアプリに組み込む場合はこの方法だけでは不足していたので、もうちょい実用的なコードとしてまとめてみます。 iyemon018.hatenablog.com 動作環境 前回と同じ 問題点 タッチキーボ…

(WPF)タッチキーボードを表示する

Windows10 + WPF でTextBox を選択したときにタッチキーボードが表示されない現象についてハマったのでメモ 動作環境 Windows 10 Home 1709 言語 : C# .NET Framework : 4.6 GUI アーキテクチャ : WPF タッチキーボードが表示されない 通常、Windows10 環境…

(WPF + MVVM)Material Design In XAML でモダンなダイアログを表示する

先日、業務でMaterial Design In XAML を使用したダイアログ表示機能を作ったのでメモ。 Material Design In XAML って? Google のAndroid OS に採用されているデザインシステムである"Materail Design" をMicrosoft のXAML で実現しますよというOSS プロダ…

Google Cloud Platform Vision API を.NET で使ってみた

先日、Google Cloud Platform のVision API を使用してOCR を試したんですが、思いのほか簡単にできたのでその使い方についてメモメモ。 ※なお、この記事は 2018年5月13日 時点の内容です。最新の情報とは異なる可能性がありますのでご注意ください。 Google…

(WPF)要素のスクリーンキャプチャーを保存するTriggerActionを作る

WPFで画面上の要素をキャプチャーして画像ファイルとして保存するような要件がワリとありますが、どうせならTriggerActionで作られたプロダクトは無いかなーと思って探してみたところ、すぐには見つからなかったので自作してみました。以下、今回の開発環境…

MediaPlayer でファイル再生時のエラー回避方法について

またもやWPF のMediaPlayer ネタです。 MediaPlayer のイベントにMediaFailed がありますが、このイベントで以下のようなメッセージが出力される場合があります。 HRESULT からの例外:0xC00D11BA これはWindows Media Player が出力している例外メッセージで…

MediaPlayer でファイル再生時のノイズ発生回避方法について

前回同様、WPF のMediaPlayer のお話です。 iyemon018.hatenablog.com今回は楽曲ファイルの読み込み時ではなく、再生時に発生するノイズについてです。 このノイズも必ず発生するものではなく、特定の条件の楽曲ファイルと環境が揃わなければ発生しません。 …

MediaPlayer でファイルオープン時のノイズ発生回避方法について

WPF でWAVE ファイルなどのメディアファイルを再生するとき、System.Windows.Media.MediaPlayer を使用していたのですが、複数ファイルを纏めてオープンしたときに何故か楽曲が少しだけ再生される現象が発生しました。 ここではその回避方法についてまとめて…

フォルダ内にあるMedia の再生時間を取得する(C#/WindowsAPICodePack)

特定のフォルダ内にあるメディア(MP3とかAVIとか)ファイルの再生時間を取得する方法のメモ 動作環境 OS : Windows 10 64bit .NET Framework : 4.6 Visual Studio : 2015 Enterprise WindowsAPICodePack は、以下の方法でインストールします。 www.nuget.or…

WPF でVisualTree のヒット テストを実行する

VisualTreeHelper を使用すると特定のコントロールのVisualTree 要素を検索したりできることは知っていたのですが、今まで使用する機会は殆どありませんでした。 今回使用したときに躓いた箇所も含めて、その使用方法をメモします。以下、動作環境です。 OS …

(WPF) ウィンドウのバウンド エフェクトを無効化する方法

Windows10 でスクロールバーが表示されたListBox をタッチ操作したときにバウンドするようなUI 表現を無効化する方法についてメモします。タブレットでWindows10 を使用している際に、エクスプローラーなどで一覧表示している際に、領域外までスクロールする…

Windows10 + WPF でタッチ フィードバックを無効化する(※)

Windows10 上のWPF アプリケーションでタッチ フィードバックを無効化する方法にいてメモ※まず最初に、この記事で紹介する方法はあるパターン(後述)に対応できていません。 そのパターンでの対応方法が見つかれば追記 or あらたに記事を書きます。 タッチ …

Windows Forms のChart を使う~StripLine:グラフの装飾~

Windows Forms で、StripLine を使うと色々便利だったのでメモ。 StripLineってなに? MSDN StripLineより抜粋 ストリップ ラインは、標準またはカスタムの間隔でグラフの背景に影を付ける水平または垂直の範囲です。 ストリップ ラインを使用することができ…

Windows Forms のChart を使う~SeriesChartType:グラフ系列種別~

最近Windows FormsのChartを使用する機会があったので、備忘録として使い方を残します。まず今回はChartにどんな種類のグラフが使用できるのか見ていきます。 Chartの系列は"Series"プロパティでアクセスすることができます。 この系列の種類を変えるには、C…

WPFでCarouselPanelを作る

前回、PathListBoxを使って遊んでみましたが、今回もPathListBoxを使ってみます。 iyemon018.hatenablog.comカルーセルパネル(Carousel Panel)は、左右にコンテンツをスライドするあれです。 まずはサンプルプログラムの動作を見てみます。このように複数の…

WPFでPathListBoxを使う

WPFのコントロールにPathListBoxというものがあります。 これは、通常のItemsControlとは少し異なる動作をします。 百聞は一見にしかず、まずは以下のイメージを御覧ください。単純な動作ではありますが他のList系コントロールとは明らかに動作が異なります…

C#でシリアライズ

この前仕事でシリアライズについていろいろ調べてみたんですが、今後も使うことは多いと思うのでメモ 内容的には、画面で入力された情報を保持しておき、変更があれば確認メッセージボックスを出力して入力内容を破棄するかどうかを選択するというもの。 WPF…

オブジェクトの3分シリアライズ(XmlSerializer)

アプリケーションを作成する際に設定ファイルなんかをXMLファイルに定義する場合、みなさんはどのようにXMLのシリアライズクラスを作成しますか? 手順的には、 XMLファイルを作成する。 シリアライズクラスを作成する。 読み込み/書き込み処理を作成する。…

時刻の比較

C#

時刻の比較って結構使うんですが、よく忘れるのでメモ いつも迷って調べるんですが、だいたいMSDNのDateTime.CompareToに飛ばされます。 あのメソッドってミリ秒単位で比較するんで結局ある程度整形した形で比較しないといけないんですよね。 比較するにして…

AutoMapperを使用したオブジェクトのマッピング

先日、ある方からAutoMapperというものを教えていただきました。 どうやらオブジェクトのマッピングが簡単に実現できるとのことなので早速調べた所、結構便利だったのでメモ 1.AutoMapperとは? AutoMapperは、オブジェクト同士を自動的にマッピングしてく…