Я хочу создать библиотечный код, который будет включен в приложения WPF. В библиотеке может появиться окно, в зависимости от обстоятельств. Я могу определить окно в XAML, но я хотел бы рассматривать XAML как шаблон. Во время выполнения, во время создания окна, чтобы его можно было отобразить, я хочу заменить определенные теги в шаблоне Xaml значениями, определенными во время выполнения.
Что я хочу сделать, это примерно так:
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 предоставляет XAML для фактического окна.
Возможно ли это с InitializeFromXaml или XamlReader.Load ? Если да, то как?
Могу ли я затем получить элементы управления, определенные в XAML, например, btnUpdate во фрагменте кода выше. Как?