2017-08-30 8 views
-2

デフォルトのSplitButtonは正常に機能しますが、操作しようとするとコントロールテンプレートの問題が発生します。 (ConstructorInfoを使って)リフレクトでコントロールテンプレートを取得しようとすると、SplitButtonのコントロールテンプレートが空になります。 XAMLデザイナーで「テンプレートのコピーを編集」しようとすると、CopyStyleが動作しません(ItemsSourceは常に空のため、SplitButtonのListBoxの要素にバインドしません)。 MahAppsメトロの私のバージョンは、ここでは1.4.3.0MahApps:Metro SplitButtonコントロールテンプレート

である私はSplitButtonのコントロールテンプレートを取得しようとする方法である:

MahApps.Metro.Controls.SplitButton ctl = sender as MahApps.Metro.Controls.SplitButton; 

Type type = ctl.GetType(); 

if (type == null) 
    return; 

// Instantiate the type. 
ConstructorInfo info = type.GetConstructor(System.Type.EmptyTypes); 
Control control = (Control)info.Invoke(null); 

// Get the template. 
ControlTemplate template = control.Template; 

// Get the XAML for the template. 
XmlWriterSettings settings = new XmlWriterSettings(); 
settings.Indent = true; 
StringBuilder sb = new StringBuilder(); 
XmlWriter writer = XmlWriter.Create(sb, settings); 
XamlWriter.Save(template, writer); 

答えて

1

デフォルトControlTemplateはGitHubの上で提供されています:https://github.com/MahApps/MahApps.Metro/blob/336f7dfc4bda2d0eba8aa270737ca3c11d45128c/src/MahApps.Metro/MahApps.Metro/Themes/SplitButton.xaml

MahApps.Metroはオープ​​ンソースであります必要に応じてソースコードをダウンロードすることができます。 SplitButton 1.5.0にMahAppsメトロを更新した後

+0

感謝を提供するコントロールテンプレートで正常に動作しますが、私はすでにMahAppsデモアプリケーション(ButtonsExample)から同じソースを得ました。しかし、私はこのコントロールテンプレートを持っている問題は、Clipboardを使用可能な参照として認識しないことです(おそらくバージョン1.4.3.0?) – VladacusB

+0

なぜ、ClipBorderをBorderに置き換えないのですか? – mm8

+0

...あなた自身のものを提供するのではなく、役に立つ回答を投票してみませんか?もちろん、デフォルトのテンプレートが動作します。 – mm8

0

は...情報のため

+0

デフォルトテンプレートはバージョン1.4.3でもうまく動作します – jsanalytics

関連する問題