.NET
A.DispatcherUnhandledException イベントを使用します。以下サンプルです。未処理例外情報をイベントログに保存します。 なお DispatcherUnhandledException イベントだけだとUIスレッドの未処理例外しか捕捉できません。UIスレッド以外の未処理例外も捕捉…
A.StyleSelector を使用します。以下サンプルです。奇数行と偶数行で背景色を設定します。 まず StyleSelector を継承したクラスを作成し、奇数行・偶数行のスタイルを保持するようプロパティを設けます。そして SelectStyle メソッドをオーバーライドし、…
A.IsKeyboardFocusWithin プロパティが True の場合、IsSelected プロパティを true にするよう、ListBoxItem のスタイルにトリガーを設定します。DataTemplate で ListBoxItem に TextBox などの編集用コントロールを設けた場合、子要素の TextBox にフォ…
A.SystemColors.HighlightBrushKey を上書きします。以下のサンプルでは選択行の背景色を赤に変更しています。また SystemColors.ControlBrushKey を上書きすると、リストボックスのフォーカスが外れても選択行の強調表示を保持することが出来ます。 <ListBox ItemsSource="{Binding Persons}" IsSynchronizedWithCurrentItem="True" SelectedIndex="0" Grid.Row="1" > <ListBox.Resources> </listbox.resources></listbox>
A.ComboBoxItem を使わなくても、直接数値を設定することができます。 <Window x:Class="MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" Title="MainWindow" Height="130" Width="250"> <Grid> </grid></window>
A.WPF の Window は ResizeMode プロパティを NoResize にすると最大化ボタン等が非表示になります。Window.OnStateCnanged メソッドをオーバーライドするか、HwndSource クラスにメッセージを処理するウィンドウプロシージャを登録します。本記事は、以下 …
本日、遂に Windows 8.1 Preview が公開されました。Microsoft の公式ページは以下になります。関連記事:Windows 8.1 Previewついでに Visual Studio 2013 Preview も公開されてましたっ!次の .NET Framework のバージョンは 4.5.1 だそうです。何とも微妙…
A.DataRecord.IsFilteredOut プロパティを条件に、クエリで簡単に取得できます。 #2015/02/05 追記: IsFilteredOut の戻り値が Null許容型なので、今更ながら GetValueOrDefault メソッド使わなきゃ駄目なことに気づいた (汗 WPF FAQ の目次に戻る
MSDN に「文字列が有効な電子メール形式であるかどうかを検証する」 という記事がありますが、この記事のサンプルは RFC規約違反のアドレスを弾くよう実装してます。しかし hogehoge@i.sopftbank.jp という iPhone メールのドメインも弾くので、このままでは…
プロジェクトで使ってる地図用のActiveXコンポーネント (VB6用!) が、ここ数日おかしな値を返すため、検証用に単体テストを作ることにしました。その備忘録です。 もともと VB6 用のコンポーネントを .NET で使うのはどうよ?という話もあるのですが、代替品…
MySQL の日付型の初期値は 「0000-00-00 00:00:00」 です。これは .NET の日付型 DateTime と互換性がなく、.NET の日付型変数に代入したりキャストすると例外が発生します。 これを回避する接続文字列のキーワードが Convert Zero Datetime。接続文字列にこ…
A.DataGridColumn.CellStyle にスタイルを定義し、トリガーを設定します。 以下は、Livet を使ったサンプルです。 まず Model に Person クラスを用意しました。名前と所属と住所だけの簡単なクラスです。ちなみに名前空間はコードの都合上、省略してますの…
Enum.GetValues メソッドを使って値の配列を取得。さらに Enumerable.Cast メソッドと ToList メソッドを使い List に変換します。 Dim list = [Enum].GetValues(GetType(列挙体)).Cast(Of 列挙体)().ToList() var list = Enum.GetValues(typeof(列挙体)).Ca…
A.DataGrid.CanUserSortColumns プロパティでグリッド全体のソート可否を制御できます。 列ごとにソートの有効/無効を設定するには DataGridColumn.CanUserSort プロパティを設定してください。DataGrid.CanUserSortColumns を False にした場合、列ごとの…
#TLで指摘いただいたので、記事を追加しています。 ここひと月ほど、スレッドについて勉強してます。昨日 MSDN フォーラムに非同期に関するスレが立ったので System.Threading.Tasks.Task を使ったコードを提示してみたんですが、こちらにも備忘録で書いとき…
A.「フィールドの選択」 のタイトルは通常変更することができません。しかし FieldChooser のインスタンスを取得し、Parent の ToolWindow.Title を設定すれば変更が可能です。 以下、サンプルです。前回はコードビハインドで実装しましたが、今回はインタ…
A.FieldLayout.Description プロパティを設定します。 通常「フィールドの選択」のグループ名には、フィールドのグループ名が表示されます。 グループ名を任意の文字列にしたい場合、FieldLayout.Description プロパティを設定すると、グループ名から指定し…
A.Binding.RelativeSource の使い方がいまいちよくわからなかったので、サンプルを使ってまとめてみました。 MSDN の説明によると バインディング ターゲットの位置に対して相対的な位置を指定することにより、バインディング ソースを取得または設定します…
A.CellValuePresenter クラスのスタイルで、ForegroundActiveStyleプロパティ・ForegroundActiveStyle プロパティを編集します。 以下のサンプルでは、department 列が「事務」のレコードの前景色を赤に設定してますが、変更した行の上にマウスを移動したり…
必要に迫られ、DOBON.NET さんの以下の記事BackgroundWorkerクラスを使用して進行状況ダイアログを作成するを参考に、WPF & Livet で進行状況ダイアログを作ってみました。 ダイアログは Forms からも呼び出せることを想定したインターフェイスになってます…
A.WindowsForms の NotifyIcon クラスを使用します。 WPF では残念ながらタスクトレイアイコンの機能が提供されていません。以下の記事で触れられてますが、WPF はプレゼンテーションライブラリだからということで、MS さんはサポートする気がさらさらない…
昨日・一昨日のエントリでは二日続けて「Google Map を使って住所を正規化する」記事を書きましたが、現在携わってるプロジェクトのある画面で DOM を使うと、地図コントロール(ActiveX) がなぜか正常動作しなくなります。 関連記事 : Google Map を使って…
昨日のエントリでは WebBrowser を使いましたが、WebBrowser を使う場合 DocumentCompleted イベントの待機の問題が発生します。Application.DoEvents も極力使いたくないし、WPF でも使いたい。そこで本日は WebRequest と HTML DOM を使ったサンプルを考え…
現在使っている地図ソフトの住所正規化機能の精度が低いので、Google Map を使って正規化できないか調べてます。Google Map API を使わない方向で検索してたら、以下の記事が見つかったので参考にさせて頂きました。 参考記事 : C#でHTMLの特定要素を取得す…
Enumerable.Range 使うと簡単にできるみたい。 Module Module1 Sub Main() Dim numbers = From n In Enumerable.Range(1, 100) Select n * n ' メソッド構文 ' Dim numbers = Enumerable.Range(1, 100).Select(Function(n) n * n) For Each number In number…
XP での描画遅延の問題(Button の Enable/Disableが切り替わらない)を回避するのに、自前の RelayCommand を以下のように実装してみました。 /// <summary> /// 現在の状態でこの RelayCommand を実行できるかどうかを判断します。 /// </summary> public bool CanExecute(obj…
WPF の Dispatcher について勉強がてら自分なりに得た理解をまとめてみました。WPF アプリケーションは、レンダリング(描画)用とユーザーインターフェイス用の2つのスレッドを用いて動作します。 レンダリングスレッドはバックグラウンド動作のため、開発…
以前のエントリからだいぶ日にちが経ち、Livet も 1.0.6.1 と大きくバージョンアップしました。それに伴い仕様も大きく変わり、VB ユーザーには少々使いづらくなったので、以前の改造だけじゃ足りない部分も増えてます。そこで最新バージョンに合わせ、Livet…
本日、MSDN フォーラムで以下の質問がありました。 WPF TextBox.AppendTextにより文字列が追加されるタイミングについて 前にもフォーラムで以下の質問ありましたが、どうやら実行環境による問題っぽいです。 テキストを選択するとフォントがぼやける TextBo…
またまた備忘録です。WebRequest で XML 取得しごりごりデシリアライズしてたのを、LINQ to XML で書き直してみました。感想・・・凄くすっきりしたコードになりますね!元コード。WebRequest を使ってXMLを取得、XmlTextReader に読み込んで、ごりごりデシ…