読者です 読者をやめる 読者になる 読者になる

Code for final

ふぁいなる向けのコード置き場です。すでにコードじゃないこともいっぱい。

WPF

WPFのDataGridで初期ソート(複数ソートキー)を設定する。

WPFのDataGridで初期ソート(複数ソートキー)を設定したくなったので方法を調べてみました。 まず思いついたのが、DataGridにバインドしているObservableCollectionを並び替えて設定する方法ですが、 これは並び替えるたびにイベントが発火して遅いようです。…

WPFでTextBlockの高さを文字数に合わせて自動で調整する。

WinFormと比べてWPFのいいところは可変のレイアウトが作りやすいことだと思います。 ただ、慣れてないと思うようにいかないことが多々あります。 グリッドの下にテキストを表示して選択中のものを表示するといったことを実装する際にちょっとハマったので記…

DataGridでヘッダクリックのソート順を昇順→降順→なし→昇順にしたい。

DataGridのヘッダクリックのソートは便利です。(3回目) ただ、デフォルトだとソートの切替が昇順→降順→昇順のループになって元に戻せません。 初期ソート順が、第2ソートキーまである場合とかだと、ヘッダクリックで元の表示順に戻せないのは致命的です…

WPFでDataGridのソート後にSelectedIndexでデータを取得すると違うものがとれるとき。

WPFのDataGridはヘッダクリックのソートが実装されており、非常に便利なのですが、 一つ気をつけないとならないことがあります。 DataGridには通常、リストとかのItemsSourceをバインドすると思います。 そしてその選択行に対して何かしたいときに選択行を取…

ItemsControl(DataTemplate)内から親のDataContextを取得する。

ItemsControl(DataTemplate)内でBindingを行うとItem要素のBindingとなり、 ItemsControlの外とバインディングのターゲットが異なります。 そうなるともう、ItemsControl内では親(Window)のバインディングのターゲットは取得できないと思っていました。 でも…

XAMLでthisと同じことをする。

WPFを書いているとthisを取得したいときがくると思います。 コードを書いたほうがわかりやすいので以下に書きます。 以下のコードはTextBlockに自分自身のToolTipの値をテキスト表示しています。

XAMLで子から親の要素を取得する。

WPFを書いていると親の要素を取得したいときがくると思います。 その場合のやり方を書きます。 コードを書いたほうがわかりやすいので以下に書きます。 以下のコードはTextBlockに親であるWindowの幅をテキスト表示しています。

WPFのDataGridでカスタムソートを実装する

WPFのDataGridではデフォルトでヘッダクリックのソート機能が実装されます。 しかもデータの型がint型の場合は数値ソートになります。 ただ、数値以外も混じる場合はstring型にせざるを得ないと思います。そのstring型にすると文字列ソートになます。 文字列…

WPFでPathの範囲のどこをクリックしてもイベントが発生するようにする

WPF

WPFでButtonとかにPathを使うとPathの線上じゃないとなぜかクリックが効かないです。 そういう場合は、以下のようにBorderで囲むとPathの範囲どこクリックしてもイベントが発生するようになります。 Pathは点と点をつないだものなので、枠がないと範囲がわか…