если вы поставите Console.WriteLine(window);
позади var window = XamlWriter.Save(this);
примерно так:
var window = XamlWriter.Save(this);
Console.WriteLine(window);
вы получите это напечатано:
<MainWindow Title="MainWindow" Width="525" Height="350" Visibility="Visible" xmlns="clr-namespace:XamlReaderSample;assembly=XamlReaderSample" xmlns:av="http://schemas.microsoft.com/winfx/2006/xaml/presentation"><av:Grid><av:StackPanel Margin="0,10,0,0">
<av:TextBox Width="100" xml:space="preserve" /><av:TextBox Width="100" Margin="0,10,0,0" xml:space="preserve" />
<av:Button Name="btnSave" Width="80" Margin="0,10,0,0">Save</av:Button>
</av:StackPanel></av:Grid></MainWindow>
внутри этого кода есть кнопка с именем btnSave. в остальной части вашего кода вы пытаетесь создать новое окно из этого кода. как только вы попытаетесь создать это окно, у вас будет 2-я кнопка (помимо той, которую вы нажали) с этим именем. и это вызывает ошибку.