No more Death March

あるSEのチラシの裏 C# WPF

C# ListをラップしたObservableCollectionのイベント

ObservableCollectionはコンストラクタにListを渡して生成することが出来る。が、生成した後にListクラスを通じてコレクションを編集してもコレクション変更イベントは発生しない。 using System; using System.Collections.Generic; using System.Collectio…

WPF TextBoxの不思議な挙動

忘れる前にメモしておく。上位からみてScrollViewer→StackPanel→Grid→TextBoxの順にビジュアルーツリーを構成し、横スクロール可能な状態でGridの列をStar指定で分割、TextBoxにテキストを入力しつづけて割り当てられたサイズを超えると指定した幅を無視して…

C# ObservableCollectionに対する操作とCollectionChangedイベントの内容

C#

INotifyCollectionChangedインターフェースのCollectionChangedイベントについてMSDNの記述だけだとどういう通知が来るのかわからなかったのでプログラムを書いて確認してみた。MSDNのページは以下docs.microsoft.com 確認用のプログラム Visual Stu…

WPF MultiBindingのコールバックの挙動について

WPFのMultiBindingを初めて使った時に若干嵌ったのでメモしておく。 テスト用ビヘイビア コードビハインドでMultiBindingクラスを生成しバインディングする。マルチと言いつつTextプロパティしかバインディングしていないが確認するのには十分、コンバーター…

WPF Window起動時のイベント発生順位をメモ

WPF

余り複雑な制御を行っているコントロールを作るのは好ましくないが、どうしてもやらなければならない場合が結構あったりする。そんな時に毎回イベントの発生順位ってどうだっけ?と忘れてしまうことがあるのでメモしておく。後述の通りサンプル画面を作って…

WPF DependencyPropertyDescriptorのAddValueChanged

WPF

前回投稿した記事の中で触れていたDependencyPropertyDescriptorで実際にメモリリークするかどうかを試してみた。前回の記事はこちら↓ nomoredeathmarch.hatenablog.com画面側のコードは省くが、StackPanelとButtonを二つ配置、片方のボタンを押したらStackP…

WPF TextBlockのTextChangedイベント

WPF

TextBlockにはTextChangedというイベントは無いのだけど変更されたタイミングを知る方法はある。検索すれば色々やり方が出てくるけどいくつか種類があるので要点をメモ TargetUpdatedイベントを使う TargetUpdateイベントはバインディングのターゲットが更新…

WPF Bindingの解除は必要なのか

WPF

StackOverFlowから、ざっくりいうと質問が「Bindingって解除しないとメモリリークする?」ということで、 それに対する回答が 「DependencyPropertyかINotifyPropertyChangedを実装しているなら大丈夫、CLRオブジェクトだとメモリリークするかも。」 とのこ…

WPF ScrollViewerとPreviewKeyDown

WPF

画面上にButtonやToggleButtonを並べて配置すると矢印キーの操作でフォーカスを移動させることが出来るが、この連続したボタンをScrollViewerでラップするとフォーカス移動が効かなくなり、代わりにScrollViewerのスクロールバーが押した矢印の方向に動くよ…

WPF PreviewKeyDownとPreviewKeyUpの動き

WPF

またWPFについてちょとしたメモ、プログラムで嵌ったことはいつかの自分のためなるべくメモしておきたい。今回はPreviewKeyDownイベントとPreviewKeyUpイベントについて書いておく。当初、キーを押したらKeyDownイベントがキーを離したらKeyUpイベントが着火…

WPF TextBoxのIsReadOnlyとIsEnabledの組み合わせについて

WPF

WPFに関するちょっとしたメモ、TextBoxを修正させたくない場合基本的にはIsReadOnlyプロパティにTrueを設定するかIsEnabledにFalseを設定すると思われる。が、IsReadOnly=False、IsEnabled=Trueの場合に限って、少し困ったことになる場合がある。それは、確…

WPF ItemsControlをDataGridみたいに使う

WPF

この記事ではItemsControlをDataGridのみたいに扱うため、途中途中で必要な記述をメモして行く。

WPF StackPanelとScrollVIewerの不思議な動き

WPF

StackPanelとScrollViewerを組み合わせた時、 思った通りにScrollViewerが機能せずに引っ掛かることがある。 普通に動く場合 StackPanelをScrollViewerでラップすると、 画像のようにスクロール操作が出来るようになる。 機能しない場合 先の例とほとんど変…

WPF 不明な型 ~ を作成できません。

WPF

XAML関係で引っ掛かりやすいところ。XAMLの中で名前空間を指定する際に、同じアセンブリ内であればアセンブリ名を省略して記述することが出来る。次の画像がアセンブリ名を省略したもの。 省略せずに記述したものは次の画像のようになる。 省略した方が記述…

WPF 外部ライブラリに宣言されているリソースディクショナリの使用方法

WPF

いつも書き方を忘れるのでメモ。下の画像のようにプロジェクトResourceDictionaryServe内にリソースディクショナリMyResourceDictionaryがあったとして これをResourceDictionaryClientで使いたいとなった場合の記述は以下の通り ResourceDictionaryのSource…

StackOverFlowExceptionの原因

C#

忘れないうちにもう一つ、ほとんどが記述ミスによるメソッドやプロパティの無限ループが原因だが、 Linqの遅延評価が多用されている場合も呼び出し時に発生することがある。自分の場合、かなり頻度の高い処理の中で 同じ変数にLinqの遅延評価される戻り値を…

WPFのVisibilityとIsVisibleの違い

WPF

twitterではぶつぶつ独り言を呟いているけど、 ブログの方は半年以上なにも書いてなかったのか・・・ここしばらくWPFやC#で色々と痛い思いをしてるので、 忘れないように少しずつブログに吐き出す習慣をつけるようにしたい。ソースやXAMLも載せた方…

WPF ボタンのカスタマイズ方法概略

はじめに 入力に使うコントロールは結構癖があり忘れやすいのでメモしておきます。仕事で使う場合だと色を変えたいとかアイコン埋め込みたいとか、 色々あるかと思いますがあくまで雰囲気重視の記述です。 ボタン側のXAML ボタンのXAML、Buttonクラスを継承…

WPF 描画の練習 マル印

前回の記事に引き続き、WPFの描画周りを練習前回の記事はこちら↓ nomoredeathmarch.hatenablog.com前回はバツ印を作ったので今回はマル印を作ってみました。 まだ簡単・・・ イメージ XAML

WPF 描画の練習 バツ印

描画処理への理解を深めるため、簡単なマークの作成に挑戦してみました。 大したことしてないのに思った以上に「それっぽく」見えるので面白いです。 イメージ XAML

WPF PathFigureによる描画

直線 - LineSegment 円弧 - ArcSegment 2次ペジェ曲線 - QuadraticBezierSegment 3次ペジェ曲線 - BezierSegment 直線 - LineSegment 指定座標までの直線を引く。

WPFのグラデーション

一つ前の記事と同じようにグラデーションについてもメモ

WPFの描画関係メモ

描画関係、仕事では滅多に使わないのだけど、 その分毎回忘れてしまうのでこの記事でメモ とにかく線を引いてみる 複数の線を引く 円・楕円 四角形 塗りつぶし 交差部分の塗りつぶし 交差部分の塗りつぶし(CombinedGeometry) とにかく線を引いてみる Line…

C# WPF PreviewTextInputで入力後のテキストを取得する。

とりあえずコード private static void TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e) { var textBox = sender as TextBox; if (textBox == null) return; var changed = textBox.Text .Remove(textBox.SelectionStart, textBox.Sel…

C# 正規表現の基礎をメモ

C#

Regexクラス 使用例 Regexクラス ・C#で正規表現を使う場合はRegexを使う。 ・コンストラクタでパターン文字列を指定する。 ・IsMatch(String)メソッド(戻り値bool)で正規表現と一致するかどうかを取得する。Regex クラス (System.Text.RegularExpressions…

WPF ViewModelにINotifyPropertyChangedを実装しないとメモリリークするらしい

重要な話なのでメモ【WPF】ViewModelがINotifyPropertyChangedを実装していないとメモリリークする件 - aridai.NET

WPF 主要コントロールのMSDNリンク

UIElement クラス (System.Windows) FrameworkElement クラス (System.Windows) TextBox クラス (System.Windows.Controls) Label クラス (System.Windows.Controls) TextBlock クラス (System.Windows.Controls) UserControl クラス (System.Windows.Contro…

プログラミングで見かける英単語メモ

Application アプリケーション Run 走る Execute 実行 Commit コミット RollBack ロールバック Save 保存 Load 読み込み Store 保存 Restore 復元 Register 登録 Repository 貯蔵庫 Cancel 取り消し Repeat 繰り返し Receive 受け取る Throw 投げる Ignore …

.Net Frameworkのソースコード

下記URLにて公開されており、ダウンロードすることが出来ます。http://referencesource.microsoft.com/中身を理解する必要はないけど.Net Frameworkで開発してる全ての人は一度でいいから目を通してみるべきだと思います。 カプセル化という概念の重要性…

c# enumをDictionaryのキーにした場合のパフォーマンス

3年以上の前の記事ですが、参考にさせていただき調べてみました。proprogrammer.hatenadiary.jp要約するとintへのキャストは高速だけどGetHashCodeの実装は低速とのこと。 あまり厳密なテストをしたわけではないですが、.Net Framework4.6の環境で試してみ…