mogmo .NET

C#/XAML/VB6たまにC++についてメモ程度に書いていく。あくまで自分用。責任は取れません。

WPF

メイン画面が起動する前にダイアログを表示する

メイン画面を起動する前に独自のダイアログを表示したくて調べた。 ログイン画面を表示する時なんかが多いかもしれない。 問題点 App.xaml.csでMainWindowを表示する前にダイアログを表示するコードを書いて実行すると,ダイアログを閉じたらアプリケーショ…

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

参考 WPF/XAML : DataGrid の表示内容を TextBox への入力内容でフィルタリングする - i++ 上記サイトにお世話になりました。 ポイントは以下3つとのこと。 DataGrid の ItemsSource に CollectionViewSource.View を使う CollectionViewSource.Filter にフ…

TextBoxで右クリックするとWindowsがフリーズする

現象 Visual Studio 2017でWPFアプリを開発中に, テキストボックスを右クリックするとVisual Studioがフリーズする現象が起きた。 どのアプリを作ってもフリーズする。困る。Windowsのイベントビューアを見たらこんなエラーが出ていた。Windows イベントビ…

入力エラーの検証

以下サイトが参考になりそう。WPFでの入力値検証 - SourceChordWPFでの入力値検証・その2 ~INotifyDataErrorInfoを使ってみる~ - SourceChord

ListView/ListBoxの要素間の隙間を無くす

WPF

ItemContainerStyleでListBoxItemのスタイルのPaddingを0にすればよい。 <ItemsControl.ItemContainerStyle> <Style TargetType="{x:Type ListBoxItem}"> <Setter Property="BorderThickness" Value="1"/> <Setter Property="Margin" Value="0"/> <Setter Property="Padding" Value="0"/> </Style> </ItemsControl.ItemContainerStyle>

コレクション型依存関係プロパティ

なんかうまく動かないんだよなぁ。。調査中。 まとまったら文章整理する。 コレクション型依存関係プロパティ | Microsoft Docs

INotifyPropertyChangedの実装

いつも調べちゃうのでメモ。 INotifyPropertyChangedを継承する プロパティの変更通知をViewに反映するので,ViewModelに継承させることが多い。 場合によってはModelに継承させることもしばしば。NugetからPrismパッケージをインストールして使用すると,次…

Visual Studio 2017でXAMLデザイナーの背景色を変更する

結論 対策1 オプション設定を変更 [ツール] ->[オプション] -> [環境] -> [フォントおよび色] -> 設定の表示を「XAML デザイナー」にして配色を白に変更することで対策可能。オプション設定設定変更後のXAMLデザイナー 対策2 テーマエディタを使用 こちらは…

aiファイルをXAMLに変換

WPF

Blend for Visual Studio 2013の場合 Blend2013ではaiファイルをインポートすることでXAMLに変換することが可能。 Blend2015以降はこの機能が失くなっているので,要注意。 ファイル > インポート > aiファイルを選択 > XAMLを自動生成&表示 拡張機能を追加…

ListViewの列の文字列を右寄せにする

WPF

ListViewItemのHorizontalContentAlignmentプロパティをStretchにする。 ポイントはこれ。 ListViewItemの横幅をStretchにしないと,せっかくTextAlignmentを設定しても右寄せにはならない。 <UserControl.Resources> <ResourceDictionary> <Style TargetType="{x:Type ListViewItem}"> <Setter Property="HorizontalContentAlignment" Value="Stret</style></resourcedictionary></usercontrol.resources>…

メトロデザインWindowにDropShadowをつける

WPF

WindowChromeとWindowのBackgroundの背景色を透明にすることで実現可能です。 2018/12/10 追記----------- WindowStyle="None"に設定しないでメトロ×DropShadowを実装した かたですが,方法がみつからず。 - Window枠を消す WindowChromeを使用する。 https:…

Windowの枠を消す

WPF

Window枠の消し方 方法は以下の2通りある。 WindowChromeでデフォルトの枠を消す WindowStyleプロパティをNoneにする WindowChromeを実装する WindowChromeクラスの詳細は,MicroSoft Docsに記述されています。 WindowChrome クラス (System.Windows.Shell) …

コンボボックスのItemsSourceはどこに実装すべきか

WPF

以下のサイト様が参考になりました。 qiita.com

C#からDataGrid内のコントロールにアクセスする

WPF

DataGridでColumnsにDataGridTrmplateColumnを置き,表示する内容を色々とカスタマイズすることが多い。 ここでたまに困るのが,DataGridTemplateColumnの中のDataTemplate内のコントロールにアクセスするとき。何度かつまづいたので,メモする。 参考URL ミ…

CollectionViewクラスを使ってDataGridをグループ化する

WPF

CollectionViewクラスには,グループ化および並べ替えを実装する機能を持つIEnumerableインターフェイスが用意されています。 CollectionViewSourceクラスでは,CollectionView クラスのプロパティを XAML から設定することができます。このCollectionViewSo…

ウィンドウのタイトルバーを無くす

WPF

名前は何て言うんでしょうね。 Zuneライクやメトロライクと言われている方が多いみたいです。さて,その実装方法についてですが,ぐらばくさんが記事に載せている通りです。 WPF で Zune のようなウィンドウを作る | grabacr.nét以下はもしこの記事が消えて…

Enumの値をコンボボックスに表示する(リソース文字列を使う)

WPF

アプリ開発をしていると,文字列はリソースで管理することが多い。 しかし,Display や Descriptionなどの属性引数にリソース文字列を使おうとすると,コンパイラ エラー CS0182(属性引数には定数式,typeof 式,または属性パラメーター型の配列の作成式で…

Enumの値をコンボボックスに表示する(Description属性)

WPF

基本的にはDisplay属性と変わらないのでもろもろ省略する。 コンボボックスに表示するEnumをつくる public enum DescriptionCountry { [Description("ニッポン")] Japane, [Description("アメリカ")] America, [Description("マレーシア")] Malaysia } Descr…

Enumの値をコンボボックスに表示する(Display属性)

WPF

Display属性を使ってEnumの値をコンボボックスのアイテムに表示するものを作った。 Description属性を使う場合は別の記事にまとめる。 コンボボックスに表示するEnumをつくる 参照にSystem.ComponentModel.DataAnnotationsを追加すると,Display属性が使える…

UIを含むクラスライブラリプロジェクトに必要な参照設定

WPF

コントロールを含むライブラリのためのプロジェクトではなく,通常のクラスライブラリのプロジェクトで開発を開始した場合,ウィンドウ等が追加できない状態になる。 この解決方法を書いていきます。 参照の追加 以下の4つを参照に追加する。 アセンブリ > …

DataTriggerを使う

WPF

DataTriggerって? 「バインドしているデータの値が**の時,コントロールの**プロパティを**する」等言う動作を定義できる。 DataをTriggerにして何かするよ~って感じだね。 DataTriggerのサンプル サンプルをメモしておく。 以下のようなラジオボタ…

Dllの読み込み場所を移動する

WPF

フォルダ構成 今回,Dllの置き場所は,exeの作られるフォルダの直下の「dll」フォルダにまとめることにする。 Dllの読み込み場所をApp.configで指定 assemblyBindingタグ内にprobingタグを指定すればよい。 このconfigファイルの中身を見てアプリはdllフォル…

(旧)ScrollBarのStyleをカスタマイズ

WPF

ScrollViewerのスタイルをいじってみる。2018/11/05 現在:ScrollViewerのStyleを作成して,x:Key = {StaticResource {x:Type ScrollViewer}} とすると,テキストボックスで不具合が起きたり,DataGridではデフォルトの見た目になっていた。 対処法を別記事…

MouseイベントなどをViewModelで受け取る

WPF

XAMLでインタラクションを使用する方法 以下の二つを設定します。 xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"と xmlns:core="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactio…

Windowの背景透明化

WPF

Windowの背景透明化を行うには,Windowコントロールのプロパティを以下のようにする。 <Window x:Class:*** WindowStyle="None" AllowsTransparency="True" Background="Transparent" ... /> こんな感じになった。 なにやらボタンとかも透明化されてしまっている。</window>

コントロールテンプレートを使ってみる

WPF

リソースディクショナリに何度も使うWindowのスタイルを定義する。 スタイルを書いていくリソースディクショナリの作成 コントロールテンプレートをリソースディクショナリに書いていくことにしたので,ファイルを作成。 こういうコントロールテンプレートが…