まめ - たんたんめん

備忘録 C# / WPF 多め

C#

C# List<T>のforeachループの最速を検証してみる

C#

元ネタはこちらのブログです。 (C#) List<T>からSpan<T>を引き抜いて高速化 - ネコのために鐘は鳴る 知らなかったのですがListのforeachはパフォーマンスが悪いみたいですね。 今回はブログに書いてある手法のパフォーマンスを実測して検証してみようと思います。 </t></t>…

private なメンバーをC#の黒魔術で高速に取得する

C#

こんばんは。 今日はC#のprivateメンバーを取得してみます。 private なメンバーと言えばReflectionですがいかんせん速度がネックです。 これを.NetCoreから使えるUnsafe.Asを使うとどこまで高速化できるか検証してみました。 今回用意するクラスはこんな感…

C# async / awaitを利用する上での注意点

C#

おはようございます。 今日は C# の非同期構文である async - await について細かい話は色んなブログとかにあったのですが自分用に完結に要点だけまとめます。 構文とか仕組みについてはこの記事では解説しません。 async void 禁止 コンストラクタでの非同…

MVVMにおけるデータ仮想化の実装

概要 デモアプリ 実装 デモで利用したライブラリ こんにちは。 今日は仮想化についての話です。 WPF界隈で仮想化と検索するとVirtulizingStackPanelのようなものViewに関する記事などが多く出てくるとと思いますが 今さら使い方の説明を書いても面白みがない…

WPF - FontAwesomeの利用方法比較と自前で作ったコントロールの紹介

はじめに フォントファイルをそのまま使う 問題 Font Awesome WPF を使う 問題 YiSA.FontAwesome5.WPFを使う 自作版FontAwesomeコントロールの紹介 SVG から C#への Converterの作成 描画コントロール 最後に はじめに FontAweomeとは素晴らしいアイコンをフ…

WPF StoryBoardを使ったアニメーションの拡張

お久しぶりです。久々にやる気になったので技術記事を書きます。 今日はWPFのアニメーションをカスタマイズしてちょっとリッチな表現ができる機能を紹介しようとおもいます。 入門記事やシンプルな組み込み型の記事についてはいろんなブログで紹介されていた…

C# 印刷機能(Microsoft Print to PDF)を使ってC#から画像をPDF化する

C#

画像をPDF化する方法を調べていたところ印刷機能(Microsoft Print to PDF)からPDFを作成する機能を見つけたのでこれをC#から呼び出しbat処理するためにC#で呼び出すサンプルです。 以下のサンプルではディレクトリを指定した場合は含まれる画像ファイルをま…

WPF DataTemplate.DataType にinterface を指定可能にするDataTemplateSelectorの実装

やりたいこと ListViewやItemsControlでデータを並べる際に interface にってViewを切り替えたい。 ItemsControlのDataTemplate解決の仕組み ListVIewやItemsControlが並べるデータのViewを指定する仕組みについて簡単に解説します。 ItemsControlではItemsS…

WPF タイムライン風のコントロールを作る

WPFでタイムライン風のコントロールを作ってみました。 1000 トラック x 4 クリップくらいは追加しても問題なく動きます。 目盛り数値はスクロール範囲外に描画していますが、スクロールバーの移動に追従して移動します。 各トラックに描画されているメモリ…

WPF DependencyProperty SetCurrentValue と SetValueの違い

今日は DependencyProperty.SetValue()とDependencyPropertySetCurrentValue()の違いについて具体例を出して挙動の違いを見ていこうと思います。 「ViewModelの値とViewの値が違うんです。」みたいな相談をたまに受けるんですが大体原因はこれです。 まずはD…

C# 値型と参照型の違い Box化とは

C#

概要 今日は値型と参照型、値のBox化について解説します。 まず、値型と参照型の違いについて解説し、そのあとにBox化についてを解説します。 1.値型と参照型の違い C# には値型と参照型があり値型は int , bool , float 等の組み込み型の他に struct がある…

WPF TsNodeをnugetに公開しました

TsNodeとは TsNodeとはWPFから扱えるグラフエディター(ノードエディター)風のアプリが作れるカスタムコントールライブラリです。 今回、より簡単にいろんな人が使えるようにTsNodeをnugetに公開しました。 まずは、画面表示するまでのチュートリアルをやり…

WPF 無限ScrollViewer

無限スクロールビューアーというものを作ってみました。 例によってノードエディターの付属品としての実装です。 ScrollViewerを継承するアプローチで実装をしようと思ったのですが、負の値がうまく扱えず断念。 仕方なくCustomControlとして実装しました。 …

旧式C#プロジェクト(csproj)をSDKスタイルへ移行する方法

C#

旧式プロジェクトとは下記のような形式で、従来の.NET では一般的なものでした。 <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> </project>

WPF コントロールにグリップでサイズを変更する機能を付与するBehaviorを作る

TextBoxやButton等のWPFの標準コントロールに簡単にサイズを変える機能を添付する方法を紹介します 一番シンプルなのはコードビハインドのMouseDownやMouseMoveをごにょごにょして実装する方法ですが あまりスマートではないし、コントロール事に実装しない…

(WPF)エクスプローラ風のアドレスバ―コントロールっぽいものを作ってみた。

使えそうなOSSがあまりなかったので自作しました。 実際に組み込んでみるとまだいろいろ不備があります。 github.com

(C#)gitのブランチ情報をアプリに埋め込むツールを作った

C#

こんにちは、gitのブランチ情報をApplicationに埋め込むツールを作成しました。 ビルド前イベントに今回紹介するツールを仕込むことで仕込むみます。 こうすることでビルド直前のソースコードにブランチ情報とコミットハッシュを静的な値として入れることが…

(WPF) オシャレな半透明ウィンドウを実装してみる

タイトルの通りです。 実用性は皆無ですがやってみたかったので作ってみます。まず半透明なアプリと不透明なアプリを比較 不透明な画像ビューア 半透明な画像ビューア 地味ですが半透明になっているのが分かると思います。 Window のxamlに以下の定義を入れ…

(WPF) SelectedItems をViewModelで取得する

MVVMパターンでWPFアプリを作成しているとListViewやDataGridのSelectedItemsが取得したくなることがあります。 しかしSelectedItemsはDependencyPropertyではないので直接バインドすることはできません。 そこで以下の様なビヘイビアを作成してすることで問…