i++

プログラム系のメモ書きなど

WPF/XAML

WPF/XAML : DataGrid の行にコンテクストメニューを設定する

方針・ポイント EventSetter を使って DataGridRow に右マウスボタンイベント(MouseRightButtonUp)を設定する ContextMenu を DataGrid.Resources 内で作る そのイベント内で、Resources の ContextMenu を取得、設定する ContextMenu の方もコード上で作…

WPF/XAML : DataGrid の表示内容を TextBox への入力内容でフィルタリングする

ポイントは以下の3点です。 DataGrid の ItemsSource に CollectionViewSource.View を使う CollectionViewSource.Filter にフィルタリング用の関数を登録する TextBox の入力に変更がある度に CollectionViewSource.View.Refresh() を呼ぶ サンプルコード …

WPF/XAML : TextBox に入力ヒントを表示する

WPF界隈では hint ではなく watermark とも呼ぶらしいですね。Android の方では watermark という呼び方を聞いたことはないのですが。 参考にしたサイト(下記記載)には AttachedProperty を使った方法や Trigger を使った方法も掲載されており、「TextBox …

WPF/XAML : プロジェクト作成時のデフォルトの MainWindow.xaml などを変更する

AssemblyInfo.cs のデフォルト編集の内容とほぼ同じですが、以下のパスにあるプロジェクトのデフォルトとして使われるファイルを編集することで MainWindow.xaml やその他を変更できます。 ; VS2013 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Co…

WPF/XAML : TabControl 中の TabItem の高さを自動で揃える

TabControl に Grid.IsSharedSizeScope="True" を設定し、各 TabItem 内のコンテンツを同じグループの Grid に置くことで高さを共有します。 サンプル 2つめの TabItem の中身の高さを 1つめより低く設定していますが、Grid.IsSharedSizeScope を使うことで …

WPF/XAML : DataGrid にボタンの列を追加する

DataGrid のセル中に自分で定義した UI 要素を入れられる DataGridTemplateColumn という汎用的な列を定義し、その DataGridTemplateColumn.CellTemplate -> DataTemplate の中に Button を指定します。 サンプル DataGrid に DataGridTemplateColumn を置き…

WPF/XAML : Behavior の PastingHandler で MessageBox を表示する

ポイント PastingHandler をつけるには DataObject.AddPastingHandler を使用する 外すときは RemovePastingHandler PastingHandler として設定した関数で直接 MessageBox.Show を呼ぶと例外が発生するので Dispatcher.InvokeAsync を使う Aync じゃない方の…

WPF/XAML : TextBox の入力内容を検証して不正入力の場合にエラーを表示する

ポイント TextBox.Text に Binding.ValidationRules で Validation のルールを設定する TextBox.ErrorTemplate で不正入力時の表示をカスタマイズできる デフォルトではテキストボックスに赤枠表示 AdornedElementPlaceholder の中に元のテキストボックスが…

WPF/XAML : DataGrid の各セルを VerticalAlignment=Center にする(あるいは余白を設定する)

デフォルトでは上方向に寄ってしまいます。とくに CheckBox(DataGridCheckBoxColumn)の列で目立ちます。 これを縦方向中央揃えにするには VerticalAlignment=Center にするには、以下のようにスタイルを設定します。 サンプルコード <DataGrid x:Name="VerticalCenteredCell_DataGrid"> <DataGrid.Resources> <Style TargetType="DataGridCell"> <Setter Property="Template"> <Setter.Value> </setter.value></setter></datagrid.resources></datagrid>

C# : AssemblyInfo.cs のデフォルト値を設定する

デフォルト値は Visual Studio のインストール先のフォルダに、プロジェクトのテンプレートとして設定されているので、それを直接書き換える事で新規プロジェクト作成時のデフォルト値を設定できます。 AssemblyCompany や AssemblyCopyright には PC のメー…

WPF/XAML : Grid の各セルに余白を設定する

Grid.Resources に Style を設定して、Grid 内の子要素に Margin か Padding を設定することで余白を取ります。 注意点は、Grid に配置する全ての要素に余白を設定しようと TargetType の Type を FrameworkElement や UIElement にしても上手くいかず、どの…

WPF/XAML : Grid のセルに枠(罫線) / 背景色をつける

以下の理由から、コードから Grid の Row と Column でループして Rectanble を配置するのが一番楽という結論に。 Grid に用意されている ShowGridLines プロパティはレイアウト上の問題をデバッグするために提供されている機能であるため、スタイルを設定で…

WPF/XAML : Window 起動時のフォーカスを設定する / コードからフォーカスを設定する

Window 起動時のフォーカス設定 XAML の Window タグの属性に FocusManager.FocusedElement="{Binding ElementName=(UI要素に x:Name で付けた名前)}" をつけます。