我想製作一些將包含在WPF應用程序中的庫代碼。根據具體情況,圖書館可能會彈出一個窗口。我可以在XAML中定義窗口,但我想將XAML當作模板。在運行時,在創建窗口以便顯示窗口時,我想用運行時定義的值替換Xaml模板中的某些標記。對於窗口定義,我可以使用WPF窗口中的XamlReader.Load或InitializeFromXaml嗎?
我想要做的是這樣的:
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字符串如下所示:
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>
...
我見過的例子,其中一個按鈕或部分XAML定義並動態加載。但這不是一個按鈕或部分。 XamlTemplate爲實際的Window提供了XAML。
這是可能與InitializeFromXaml或XamlReader.Load?如果是這樣,怎麼樣?
然後我可以檢索XAML中定義的控件,例如上面代碼片段中的btnUpdate。怎麼樣?