FAQ

Q124. XamDataGrid で絞り込み表示されてるレコードのみ抽出する(其の弐)

A.以前のエントリで、XamDataGrid で絞り込み表示されてるレコードのみ抽出する方法を紹介しましたが、これ一つ落とし穴がありまして、要素の描画タイミングによるのか、正常にレコードを取得できない場合があったりします。関連記事:Q124. XamDataGrid で…

Q126. XamDockManager のレイアウトを保存・読み込み・初期化したい

A.XamDockManager はペインを一元管理できるコントロールでして、ペインのドッキングやフローティング、タブや左右・上下の配置などを自在に配置可能なコンテナコントロールです。Visual Studio のIDE をイメージすれば判りやすいと思います。 ユーザーがペ…

Q110. XamDataGrid でユーザーが設定したレイアウトを保存したい(其の参)

A.以前、XamDataGrid でユーザーが操作した列の移動や並び替え、グループ化やソートを次回起動時用に保存したい場合、SaveCustomizations メソッドやLoadCustomizations メソッドを使えば、レイアウトの保存・読み込みが可能だという記事を公開しました。関…

Q110. XamDataGrid でユーザーが設定したレイアウトを保存したい(其の弐)

A.以前、XamDataGrid でユーザーが操作した列の移動や並び替え、グループ化やソートを次回起動時用に保存したい場合、XamDataGrid.SaveCustomizations メソッドやXamDataGrid.LoadCustomizations メソッドを使えば、レイアウトの保存・読み込みが可能だとい…

Q125. コントロールの Visiblity プロパティに bool 値をバインドしたい

A.いまさら感がひしひし漂うネタですが、まあコンセプトが周回遅れブログのため、その辺りは気にせずスルーでお願いできればと思います。 コントロールの Visiblity プロパティに、ビューモデル側の bool 型プロパティをバインドさせたいシーンは多いと思い…

Q124. XamDataGrid で絞り込み表示されてるレコードのみ抽出する

A.昨日の記事に引き続き、またまた XamDataGrid ネタです。 XamDataGrid で、フィルターで絞り込まれているレコードのみを抽出には、各レコードの IsDataRecord プロパティで判定し抽出する必要があります。 以下、サンプルコートです。 前回もそうでしたが…

Q123. XamDataGrid で表示されている内容をそのまま EXCEL に出力したい

A.くそ忙しかったため、かなりご無沙汰しておりましたが、久々の XamDataGrid ネタです。 XamDataGrid で表示されている内容を Excel に出力したい場合、DataPresenterExcelExporter クラスの Export もしくは ExportAsync メソッドを使うといいです。この…

Q122. App.xamlで定義したリソースを動的に変更したい(バインディング編・その弐)

A.アプリケーションクラス自体をカスタマイズしリソースにバインドさせることで、アプリケーションリソースの動的変更が可能になります。 昨日のネタを基に ViewModel を使わずリソースとバインドするようできないか、少し考えてみました。

Q121. App.xamlで定義したリソースを動的に変更したい(バインディング編)

A.アプリケーションリソースにビューモデルを用意し、リソース定義にバインドさせることにより動的変更が可能になります。 先日のネタを基に ViewModel を使ってバインドできるようならないか、少し考えてみました。

Q120. App.xamlで定義したリソースを動的に変更したい

A.App.Current.Resources で、App.xaml に定義したリソースを参照できるので、リソースの中身をコードビハインドでごっそり入れ替えてしまえばいいです。 久々のWPFネタです。最近某所から要求があったので、少しサンプルを考えてみました。

Q119. ビューモデルの状況に応じて動的にメニュー構成を変更したい

A.DataTrigger を使って、MenuItem.ItemsSource の中身をごっそり入れ替えてしまうという手があります。これならコードビハインドは不要です。 例えば以下のようなメニュー構成になっているとします。 これを状況により以下のような構成にしたり こんな構成…

Q118. ListBox の項目にボタンを表示し、ビューモデルのコマンドとバインドさせたい

A.DataTemplete を使ってリストボックスの項目表示をカスタマイズし、コマンドをバインドします。DataTemplete は XAML 系アプリケーションならではの機能で、Windows Forms では実現不可能な極めて柔軟なインターフェイスを提供します。以下、MSDNの関連記…

Q117. ActiveReports WPF 用 Viewer をカスタマイズしたい

A.例えば ActiveReports Viewer に PDF出力用のアイコンを追加したいというニーズがあるとします。この場合、コードビハインド内で Viewer のビジュアルツリーを辿って ToolBar のインスタンスを取得、PDF用のボタンを追加するという方法もありますが、あま…

Q116. Form.ShowDialogのパラメータに Window を渡したい

A.全くニーズはないと思いますが(汗)、とりあえず備忘録としてエントリを起こしました。Forms から WPF への移行期間に、同一プロジェクト(もしくはソリューション)内で Form と Window が混在する場合があります。*1 親 Window から子 Form を ShowDialog …

Q115. ソリューション全体でアイコンを統一管理したい

A.ソリューション全体で画面のアイコンを統一管理したいというニーズがあったため、この記事を起こしました。 まず単一の画面であれば、以下のようにWindow.Icon プロパティにパスを指定するだけで事足ります。 <Window Icon="/hoge.ico" /> 少し大きなプロジェクトになると、アイコン</window>…

Q114. XamComboEditor のアイテムのマージンを任意に設定したい

A.このところベンダーさんのコントロールに偏り過ぎた内容のため FAQと名乗っていいのかかなり怪しくなってきましたが(汗)、そこは個人ブログの備忘録ということでお許し頂きたく思います。 前回に引き続き XamComboEditor の話です。以下の画像を見てのと…

Q113. XamComboEditor のチェックボックスをバインドしたい

A.またまた備忘録。Infragistics社のWPFコントロール群に含まれているコンボボックス「XamComboEditor」ですが、CheckBoxVisibility プロパティを True にすると「チェックボックス付きコンボボックス」に変わります。 これ、なかなか便利そうなんですが、…

Q112. XamDataGrid でネストされたレコードのヘッダをデザインする

A.昨日のエントリに引き続き、ネストレコードに関する備忘録です。XamDataGrid でネストレコードが存在する場合、ネストレコード側のヘッダのみ変更する方法について色々調べたところ、二つ目のFieldLayout 内でスタイルを設定すればいいことがわかりました…

Q111. XamDataGrid でネストされたレコードのフィールドを設定する

A.備忘録です。XamDataGrid でネストされたレコードが存在する場合、どうすればラベルや列幅が設定できるか判らなかったのですが、XamDataGrid.FieldLayouts で二つ目の FieldLayout に設定すればいいことがわかりました。 以下、スニペットです。ネストさ…

Q110. XamDataGrid でユーザーが設定したレイアウトを保存したい

A.XamDataGrid でユーザーが操作した列の移動や並び替え、グループ化やソートを次回起動時用に保存したいというケースがあります。その場合、XamDataGrid.SaveCustomizations メソッドやXamDataGrid.LoadCustomizations メソッドを使えば、レイアウトの保存…

Q109. XamDataGrid のレポートフッターに印刷日時やページ数を表示したい

A.Infragistics.Windows.Reporting.Report.PageFooterTemplate プロパティに、XAMLで定義した DataTemplate リソースを設定します。ヘッダーも Report.PageHeaderTemplate プロパティに DataTemplate を設定できます。 以下サンプルです。 <igDP:XamDataGrid.Resources> <DataTemplate x:Key="FooterTemplate"> <Grid Margin="5"> <Grid.ColumnDefinitions> </grid.columndefinitions></grid></datatemplate></igdp:xamdatagrid.resources>

Q108. XamDataGrid の印刷時に余白や印刷方向を設定したい

A.Infragistics.Windows.Reporting.Report.ReportSettings プロパティを設定します。 なおReportSettings クラスのプロパティ一覧ですが、12.1以降のバージョンだとオンライン・オフラインともリングが切断されていて見当たりません。11.2 ならあるようなの…

Q107. XamDataGrid の内容を印刷時にプレビューを表示したい

A.Infragistics.Windows.Reporting.XamReportPreview を要素に持つ画面を呼び出せばプレビューを表示できます。 以下サンプルです。 // C# using Infragistics.Windows.Reporting; public partial class MainWindow : Window { private void Button_Click(O…

Q106. XamDataGrid の表示内容をそのまま印刷したい

A.コードビハインドで Infragistics.Windows.Reporting.Report クラスを使えば、簡単に印刷できます。列幅の変更・ソート・列の移動やフィルタリング等、ユーザーが任意に行った設定や、XamDataGrid に設定したテーマがそのまま印刷に反映されます。 以下サ…

Q105. ListBox 等で、コレクションを操作せずソートするには

A.ItemoSource でバインドされたコレクションを操作せずに コントロールで並び替えを行いたい場合が多々あると思います。その場合、リソース内で CollectionViewSource を使えば、コレクションを操作せずにソートすることができます。 以下サンプルです。Vi…

Q104. WPF でツールチップをバルーン形式にするには?

A.吹き出し図形をレンダリングする Callout クラスを使います。なおこのクラスは Blendのアセンブリ「Microsoft.Expression.Drawing」で提供されていますので、事前に参照設定に追加しておく必要があります。以下サンプルです。このサンプルではツールチッ…

Q103. WPF で未処理例外に対応するには?

A.DispatcherUnhandledException イベントを使用します。以下サンプルです。未処理例外情報をイベントログに保存します。 なお DispatcherUnhandledException イベントだけだとUIスレッドの未処理例外しか捕捉できません。UIスレッド以外の未処理例外も捕捉…

Q102. ListBox で一行おきに背景色を変えるには?

A.StyleSelector を使用します。以下サンプルです。奇数行と偶数行で背景色を設定します。 まず StyleSelector を継承したクラスを作成し、奇数行・偶数行のスタイルを保持するようプロパティを設けます。そして SelectStyle メソッドをオーバーライドし、…

Q101. ListBoxItem で子要素の編集時に強調表示するには?

A.IsKeyboardFocusWithin プロパティが True の場合、IsSelected プロパティを true にするよう、ListBoxItem のスタイルにトリガーを設定します。DataTemplate で ListBoxItem に TextBox などの編集用コントロールを設けた場合、子要素の TextBox にフォ…

Q100. リストボックスの選択行の背景色を変更するには?

A.SystemColors.HighlightBrushKey を上書きします。以下のサンプルでは選択行の背景色を赤に変更しています。また SystemColors.ControlBrushKey を上書きすると、リストボックスのフォーカスが外れても選択行の強調表示を保持することが出来ます。 <ListBox ItemsSource="{Binding Persons}" IsSynchronizedWithCurrentItem="True" SelectedIndex="0" Grid.Row="1" > <ListBox.Resources> </listbox.resources></listbox>