VisualStudioのXAMLデザイナを拡張する 2.右クリックでGridのColumnを追加編
VisualStudioのXAMLデザイナ拡張第二回です。
今回はGridの列追加を、Grid上で右クリックしたらできるようなサンプルです。
環境
Visual Studio Community 2017
.NET Framework 4.7.1
実装イメージ
こんな感じでGridを右クリックするとコンテキストメニューに"Column追加"というメニューが出てきて、クリックすればColumnDefinitionが追加されるといった感じです。
1.下準備
今回拡張対象となるCustomGridの作成、デザイン時のMetadata用のアセンブリの作成、IProvideAttributeTable継承クラスの作成は前回を参照してください。
2.FeatureProviderを作る
今回はコンテキストメニューを拡張するのでPrimarySelectionContextMenuProvider継承クラスで作ります。
前回よりもさらに単純で、追加したMenuActionが実行されたらColumnDefinitionsプロパティを取得してColumnDefinitionを追加しているだけです。
namespace CustomControl.VisualStudio.Design
{
class CustomContextMenuProvider : PrimarySelectionContextMenuProvider
{
public CustomContextMenuProvider()
{
MenuAction action = new MenuAction("Column追加");
action.Execute += (sender, e) =>
{
ModelItem item = e.Selection.PrimarySelection;
ColumnDefinitionCollection collection = item.Properties["ColumnDefinitions"].ComputedValue as ColumnDefinitionCollection;
collection.Add(new ColumnDefinition());
};
this.Items.Add(action);
}
}
}
3.XAMLデザイナで確認する
ここも前回の手順を確認してください。
これでやってみるとわかると思うんですけどうまく動かないんですよね。
画面上だと追加されるんですけど、XAMLに反映されないです。Collectionなので変更通知がXAMLのコードエディタに行かないんですかね。
鋭意調査中です。直せたら更新します。
Author And Source
この問題について(VisualStudioのXAMLデザイナを拡張する 2.右クリックでGridのColumnを追加編), 我々は、より多くの情報をここで見つけました https://qiita.com/soiyayios/items/c9b070da77a674b9089b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .