FAQ

Q099. コンボボックスの項目に整数リテラル値を設定するには?

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>

Q098. 最大化ボタンを有効にしながら、ユーザーによるサイズ変更を不可にするには?

A.WPF の Window は ResizeMode プロパティを NoResize にすると最大化ボタン等が非表示になります。Window.OnStateCnanged メソッドをオーバーライドするか、HwndSource クラスにメッセージを処理するウィンドウプロシージャを登録します。本記事は、以下 …

Q097. XamDataGrid でフィルタリングされたレコードのコレクションを取得するには?

A.DataRecord.IsFilteredOut プロパティを条件に、クエリで簡単に取得できます。 #2015/02/05 追記: IsFilteredOut の戻り値が Null許容型なので、今更ながら GetValueOrDefault メソッド使わなきゃ駄目なことに気づいた (汗 WPF FAQ の目次に戻る

Q096. DataGrid でセルの値を変えると背景色が変わるようにするには?

A.DataGridColumn.CellStyle にスタイルを定義し、トリガーを設定します。 以下は、Livet を使ったサンプルです。 まず Model に Person クラスを用意しました。名前と所属と住所だけの簡単なクラスです。ちなみに名前空間はコードの都合上、省略してますの…

Q095. DataGrid でソートを制御にするには?

A.DataGrid.CanUserSortColumns プロパティでグリッド全体のソート可否を制御できます。 列ごとにソートの有効/無効を設定するには DataGridColumn.CanUserSort プロパティを設定してください。DataGrid.CanUserSortColumns を False にした場合、列ごとの…

Q094. XamDataGrid で 「フィールドの選択」 のタイトルを変更するには?

A.「フィールドの選択」 のタイトルは通常変更することができません。しかし FieldChooser のインスタンスを取得し、Parent の ToolWindow.Title を設定すれば変更が可能です。 以下、サンプルです。前回はコードビハインドで実装しましたが、今回はインタ…

Q093. XamDataGrid で 「フィールドの選択」 のグループ名を変更するには?

A.FieldLayout.Description プロパティを設定します。 通常「フィールドの選択」のグループ名には、フィールドのグループ名が表示されます。 グループ名を任意の文字列にしたい場合、FieldLayout.Description プロパティを設定すると、グループ名から指定し…

Q092. Binding.RelativeSource の使い方がよくわからない

A.Binding.RelativeSource の使い方がいまいちよくわからなかったので、サンプルを使ってまとめてみました。 MSDN の説明によると バインディング ターゲットの位置に対して相対的な位置を指定することにより、バインディング ソースを取得または設定します…

Q091. XamDataGrid で特定データの前景色を変更後、マウスホバー行や選択セルに設定した前景色を反映するには?

A.CellValuePresenter クラスのスタイルで、ForegroundActiveStyleプロパティ・ForegroundActiveStyle プロパティを編集します。 以下のサンプルでは、department 列が「事務」のレコードの前景色を赤に設定してますが、変更した行の上にマウスを移動したり…

Q090. WPF でタスクトレイアイコンを表示するには?

A.WindowsForms の NotifyIcon クラスを使用します。 WPF では残念ながらタスクトレイアイコンの機能が提供されていません。以下の記事で触れられてますが、WPF はプレゼンテーションライブラリだからということで、MS さんはサポートする気がさらさらない…

Q089. WPF でスペルチェックをするには?

A.SpellCheck.IsEnabledプロパティを True に設定します。日本語環境の場合は Language プロパティで言語を指定します。 <TextBox SpellCheck.IsEnabled="True" Name="textBox1" Language="en-us" > この依存関係プロパティは、TextBoxBase クラスを継承したコントロールのみ有効で、標準コントロールでは TextBox・RichTextBox のみ</textbox>…

Q088. テーマを適用した XamDataGrid のセルに境界線を引くには?

A.XamDataGrid.FieldSettings.CellValuePresenterStyle プロパティを設定します。 XamDataGrd にはテーマが豊富に用意されてますが、テーマの中にはセル境界線を非表示にしてしまうものもあります。これでは視認性が悪いので表示できないか調べたところ、Fi…

Q087. XamDataGrid にテーマを設定するには?

A.XamDataGrid.Theme プロパティを設定します。 以下、サンプルです。コンボボックスで選択したテーマが XamDataGrid に反映されます。

Q086. DataGrid/XamDataGrid でスクロールバーをダブルクリックすると、MouseDoubleClickイベントが発生しちゃう!><

A.Forms の DataGridView はスクロールバーをダブルクリックしても MouseDoubleClick イベントは発生しません。しかし WPF の DataGrid や XamDataGrid は、スクロールバーをダブルクリックすると MouseDoubleClick イベントが発生します。どうやらこれは仕…

Q085. XamDataGrid で特定データの前景色を変更するには?

A.DataRecordCellArea のスタイルを編集します。 以下のサンプルでは、department 列が「事務」のレコードの前景色を赤に設定してます。

Q084. XamDataGrid で並び替えを初期化するには?

A.FieldLayout.SortedFields.Clear メソッドを実行します。 以下、サンプルです。 C# private void button1_Click(object sender, RoutedEventArgs e) { this.xamDataGrid1.FieldLayouts[0].SortedFields.Clear(); } VB.NET Private Sub Button1_Click(send…

Q083. XamDataGrid でフィルタリングを初期化するには?

A.FieldLayout.RecordFilters.Clear メソッドを実行します。 たとえば deeartment フィールドが「事務」でフィルタリングされてるとします。 XamDataGrid でフィルタリングを初期化するには、通常 FilterClear Button をクリックします。 クリックするとフ…

Q082. XamDataGrid でフィルタリングの初期値を設定するには?

A.RecordFilter の新しいインスタンスを作成し、FieldLayout.RecordFilters に追加します。 以下、サンプルです。このサンプルでは nameフィールドのフィルタリング条件を「等しい」にし、初期値を「佐藤 陽一」に設定してます。 C# using System; using Sy…

Q081. XamDataGrid でフィルタリングの初期条件を指定するには?

A.FieldLayout.RecordFilters に起動時に設定したい条件を追加します。 以下、サンプルです。このサンプルでは全フィールドのフィルタリングの初期条件を「含む」に設定してます。

Q080. XamDataGrid のフィルタリング条件を制限するには?

A.FieldSettings の FilterOperatorDropDownItems プロパティに使用する条件のリストを指定します。 以下、サンプルです。このサンプルでは条件演算子「等しい」「含む」「始まる」を設定してます。

Q079. XamDataGrid のフィルタリングを有効にするには?

A.FieldSettings の AllowRecordFiltering プロパティを True にすると、フィルタリングを有効にできます。 以下、サンプルです。

Q078. TextBoxの入力をカナや英数だけに制限したいが簡単な方法はないか

A.自分でロジックを組むこともできますが、GrapeCity の WPFコンポーネント InputMan for WPF に含まれている GcTextBox を使えば、入力制限を簡単に設定できます。InputMan for Windows Forms で長年培われた日本語入力技術がこのコンポーネントにも反映さ…

Q077. コードビハインドを使わずに親から子に画面遷移するには?

A.Livet を使うとコードビハインドを使わずに画面遷移が可能になります。Livet では画面遷移のメッセージアクションが提供されているので、これを使うといいでしょう。 ケースよっては、子画面を起動したら親画面を非表示にしたい場合もあります。その場合…

Q076. XamDataGrid で集計結果のスタイルを設定するには?

A.SummaryResultPresenter のスタイルを設定します。 以下、サンプルです。集計結果を青・文字サイズ20・太字・右寄せにしてみました。

Q075. XamDataGrid でセルのIMEを設定するには?

A. FieldSettings.EditorStyle のスタイル定義内で InputMethod クラスのプロパティを設定します。 <igDP:Field Name="Summary" Label="摘要" > <igDP:Field.Settings> <igDP:FieldSettings> <igDP:FieldSettings.EditorStyle> <Style TargetType="{x:Type igEditors:XamTextEditor}"> </igdp:fieldsettings.editorstyle></igdp:fieldsettings></igdp:field.settings></igdp:field>

Q074. XamDataGrid でセル編集と同時にレコードを確定するには?

A.XamDataGrid.UpdateMode プロパティでいくつかのモードを指定できるようですが、残念ながら UpdateMode 列挙体の記述を見る限り、編集と同時にレコードをコミットするモードはないようです。 メンバ 解説 OnRecordChangeOrLostFocus ユーザーがレコードの…

Q073. XamDataGrid でセルの表示を複数行にするには

A. Infragisitics の池原さんのブログで紹介されてますが、FieldSettings.EditorStyle のスタイル定義内で XamTextEditor.TextWrapping を設定します。 関連記事 : 【KBJ10092】xamDataGrid でセルの表示を複数行にするには #この記事たどりつくの、ちと手…

Q072. WPF にタイマーコントロールはないの?

A. ありません。タイマー動作は DispatcherTimer クラスを使ってください。 以下、簡単なサンプルです。 Private Sub SetDispatcherTimer() _dispatcherTimer = New DispatcherTimer(DispatcherPriority.Normal) _dispatcherTimer.Interval = New TimeSpan(…

Q071. WPF で使えるチェックボックス付きコンボボックスってありますか?

A. 有償ですが、NetAdvantage for WPF 2011 Volume 2 で強化された xamComboEditor がかなりいい感じです。 ちなみに Forms 版のチェックボックス付きコンボボックスはこちら。 チェックボックスは xamComboEditor の CheckBoxVisibility プロパティを Visi…

Q070. XamDataGrid で列を非表示にするには?

A. 対象となる Field の FieldSettings.CellMaxWidth を 0 に設定します。 集計行に合計値を出したいが、フィールドは見せたくないという特殊なニーズがありました。 早速 Field の幅を 0 にして試したところ、セルは非表示になりません。数ピクセル表示し…