UserControl x:Class="WpfApplication1.MinimalControl" >> xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" >> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >> Height="300" Width="300"> >> <TextBlock x:Name="Fred" /> >></UserControl>Used in this form:
<Window x:Class="WpfApplication1.MinimalForm" >> xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" >> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >> xmlns:uc="clr-namespace:WpfApplication1" >> Title="MinimalForm" Height="300" Width="300"> >> <StackPanel> >> <Canvas x:Name="ACanvas"> >> <uc:MinimalControl /> >> <uc:MinimalControl /> >> </Canvas> >> <Button Click="Button_Click" >Try</Button> >> </StackPanel> >></Window>Here's the test code behind:
using System.Windows; >>using System.Windows.Controls; >> >>namespace WpfApplication1 >>{ >> /// <summary> >> /// Interaction logic for MinimalForm.xaml >> /// </summary> >> public partial class MinimalForm : Window >> { >> public MinimalForm() >> { >> InitializeComponent(); >> } >> >> private void Button_Click(object sender, RoutedEventArgs e) >> { >> string s = System.Windows.Markup.XamlWriter.Save(ACanvas); >> System.IO.StringReader stringReader = new System.IO.StringReader(s); >> System.Xml.XmlReader xmlReader = System.Xml.XmlReader.Create(stringReader); >> //Exception here: >> Canvas x = (Canvas)System.Windows.Markup.XamlReader.Load(xmlReader); >> } >> } >>}Any way of manipulating the NameScope (or something) to avoid this ?