No more Death March

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

WPF

WPF TextBoxの不思議な挙動

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

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…

WPFのVisibilityとIsVisibleの違い

WPF

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

WPFの描画関係メモ

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

WPFで帳票 参考リンク

ネットで色々検索してみるとWPFでも帳票印刷が出来るらしい。 後で参考に出来そうなリンクをメモ以下参考: WPFでの印刷の基本(1) 単一ページの印刷 - Qiita WPFでの印刷の基本(2) 複数ページの印刷 - Qiita WPFを帳票フレームワークとして使う - @kotyの…

WPF 実行環境によっては画面がぼやける・・・

WPF

WPFではまったのでメモします。開発用マシンとは異なるOS、ハードで実行すると画面がぼやけてしまった。 アンチエイリアス処理の結果かなぁとは思ったけどぼやけかたが余りに酷い。なにかないかと試してみたのがこちら↓ FrameworkElement.UseLayoutRoundin…

WPF IValueConverter小メモ

WPF

DateTime向けのコンバーターでDateTime以外の入力があったら例外投げていたけど、 どうもnullで飛んでくるタイミングがあって例外発生してたもよう。変換に失敗したら例外投げるより既定値で渡した方が良い?そのうち検証しよう。

WPF 型'UserControl'はダイレクトコンテンツをサポートしていません。

WPF

クラスライブラリに(WPFの)UserControlを追加するとたまに怒られることがある。どうやら参照設定にSystem.Xaml(XAMLのパース用ライブラリ?)を追加していない状態でUserControlを追加すると再現するみたい。 System.Xamlを参照設定に追加してビルドする…

WPF Bind Modeの動きを確認

WPF

BindingクラスのBindingModeについて、改めて動きを確認してみました。まずビュー側

WPF ObservableCollectionのチューニング

WPF

WPFがもっさりしているのでいろいろ検索している中でなるほどーとなったもの、大事そうなのでメモします。Twelve Ways to Improve WPF Performance | PelebyteObservableCollectionでこんなようなことをしてたとして。 using System.ComponentModel; using S…

WPF DataGridのSelectedItemプロパティにバインド

WPF

ちゃんと検証していないけど結構はまったので考察します。 DataGridで選択中の行をViewModelで把握するために、 SelectedItemプロパティにバインド。 が、DataGridが一行しかないとき、画面でクリックしてもなにしても、 ViewModel側のSetterに飛んでこない…

WPFスタイル⇒コントロールテンプレート⇒ユーザーコントロール ???

WPF

リソースディクショナリにTextBoxをターゲットにしたスタイルを記述、 コントロールテンプレートでユーザーコントロールを追加し、 ユーザーコントロールのプロパティにテンプレートバインディング。 これを画面からバインディングしようとしても上手くいか…

WPF依存関係プロパティのバインドモード初期値

WPF

依存関係プロパティをバインドする際にModeを省略した場合、 個々の依存関係プロパティ毎に選択されるModeの既定値は異なるとのこと。 ちなみにTextBoxはTwoWayです。 Modeを省略してTextBoxにバインドするのに慣れて、 ユーザーコントロールを自作して同じ…

WPF スタイルからビヘイビアでXamlParseException

WPF

外部のアセンブリからスタイル経由でビヘイビアを使おうとしたら例外 スタイルを書いてるリソースディクショナリでビヘイビアの名前空間しか書いてなかったのが原因、 アセンブリ名も記述すると成功。 リソースディクショナリとビヘイビアは同じアセンブリに…