私はWPFアプリケーションに含まれるいくつかのライブラリコードを生成したいと思います。状況に応じて、ライブラリがウィンドウをポップアップ表示することがあります。私はXAMLでウィンドウを定義できますが、XAMLをテンプレートとして扱いたいと思います。実行時に、ウィンドウを表示できるように作成しているときに、Xamlテンプレートの特定のタグを実行時定義の値に置き換えます。WPFウィンドウからXamlReader.LoadまたはInitializeFromXamlを使用して、ウィンドウ定義を使用できますか?
私は何をしたいことは、このようなものです:私は、ボタンまたはセクションをXAMLで定義されている例を見てきました
private string XamlTemplate = @"
<Window x:Class='@@CLASS'
xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
Title='@@TITLE'
Height='346' Width='380'>
<Grid>
...
:XamlTemplate文字列は次のようになります
public partial class DynamicXamlWindow : Window
{
Button btnUpdate = null;
public DynamicXamlWindow()
{
string s = XamlTemplate;
// replace some things in the XamlTemplate here
Window root = System.Windows.Markup.XamlReader.Load(...);
Object _root = this.InitializeFromXaml(new StringReader(s).ReadToEnd()); //??
btnUpdate = // ???
//InitializeComponent();
}
動的にロードされます。しかし、これはボタンやセクションではありません。 XamlTemplateは、実際のWindowにXAMLを提供します。
InitializeFromXamlまたはXamlReader.Loadのどちらでも可能ですか?もしそうなら、どうですか?
XAMLで定義されたコントロールを取得できます。たとえば、上のコードのbtnUpdateなどです。どうやって?