Gridview 动态加载XAML

Gridview 动态加载XAML,gridview,xamlparseexception,Gridview,Xamlparseexception,我加载了一系列动态创建的GridView。一切正常,但行详细信息展开时出现错误“无法创建未知类型”{clr namespace:EMR.Controls.HPI}HPIDialogButton'。命名空间EMR.Controls.HPI在执行程序集中,我可以在其他位置使用完全相同的XAML,它可以正常工作。如果我注释掉行“HPI:HPIDialogButton…”,则行详细信息将毫无问题地展开 似乎在加载点,如果您直接执行操作,就会丢失一些为您创建的连接 private RadGridVi

我加载了一系列动态创建的GridView。一切正常,但行详细信息展开时出现错误“无法创建未知类型”{clr namespace:EMR.Controls.HPI}HPIDialogButton'。命名空间EMR.Controls.HPI在执行程序集中,我可以在其他位置使用完全相同的XAML,它可以正常工作。如果我注释掉行“HPI:HPIDialogButton…”,则行详细信息将毫无问题地展开

似乎在加载点,如果您直接执行操作,就会丢失一些为您创建的连接

   private RadGridView BuildSectionGrid()
    {
      //This is defined here until a better solution is found
      string XAML = @"
          <my:RadGridView IsReadOnly=""False"">
            <my:RadGridView.Columns>
                <telerik:GridViewToggleRowDetailsColumn />
                <telerik:GridViewDataColumn Header=""Selected"" DataMemberBinding=""{Binding IsSelected}"" IsReadOnly=""False""/>
                <telerik:GridViewDataColumn Header=""Definition"" DataMemberBinding=""{Binding Definition}"" IsReadOnly=""True""/>
            </my:RadGridView.Columns>

            <my:RadGridView.RowDetailsTemplate>
                <DataTemplate>
                    <DockPanel Margin=""10"">
                        <Label Content=""Progress Note:"" DockPanel.Dock=""Left""/>
                        <hpi:HPIDialogButton Margin=""5 0 0 0"" DockPanel.Dock=""Right"" HPIText=""{Binding ElementName=NoteItemTextBox, Path=Text, Mode=TwoWay}""/>
                        <TextBox Name=""NoteItemTextBox"" Margin=""5 0 0 0"" DockPanel.Dock=""Left"" AcceptsReturn=""True"" TextWrapping=""Wrap"" Height=""100"" Text=""{Binding ProgressNote}""/>
                    </DockPanel>
                </DataTemplate>
            </my:RadGridView.RowDetailsTemplate>
        </my:RadGridView>
";


      //Load the XAML in again
      ParserContext Context = new ParserContext();
      Context.XmlnsDictionary.Add("", "http://schemas.microsoft.com/winfx/2006/xaml/presentation");
      Context.XmlnsDictionary.Add("x", "http://schemas.microsoft.com/winfx/2006/xaml");
      Context.XmlnsDictionary.Add("mc", "http://schemas.openxmlformats.org/markup-compatibility/2006");
      Context.XmlnsDictionary.Add("telerik", "http://schemas.telerik.com/2008/xaml/presentation");
      Context.XmlnsDictionary.Add("hpi", "clr-namespace:EMR.Controls.HPI");
      Context.XmlnsDictionary.Add("my", "clr-namespace:EMR.Shared.Controls.WPF;assembly=EMR.Shared.Controls.WPF");
      return (RadGridView)XamlReader.Parse(XAML, Context);
    }
private RadGridView BuildSectionGrid()
{
//这在这里定义,直到找到更好的解决方案
字符串XAML=@”
";
//再次加载XAML
ParserContext上下文=新的ParserContext();
Context.xmlnsdirectionary.Add(“,”http://schemas.microsoft.com/winfx/2006/xaml/presentation");
Context.xmlnsdirectionary.Add(“x”http://schemas.microsoft.com/winfx/2006/xaml");
Context.xmlnsdirectionary.Add(“mc”http://schemas.openxmlformats.org/markup-compatibility/2006");
Context.xmlnsdirectionary.Add(“telerik”http://schemas.telerik.com/2008/xaml/presentation");
Add(“hpi”,“clr命名空间:EMR.Controls.hpi”);
Add(“my”,“clr命名空间:EMR.Shared.Controls.WPF;assembly=EMR.Shared.Controls.WPF”);
return(RadGridView)XamlReader.Parse(XAML,Context);
}

尝试在所有XMLN中指定程序集(在一个XMLN中找不到它):


Context.xmlnsdirectionary.Add(“hpi”,“clr名称空间:EMR.Controls.hpi;assembly=EMR.Controls.hpi”);

尝试在所有XMLN中指定程序集(您在一个XML中找不到它):

Add(“hpi”,“clr命名空间:EMR.Controls.hpi;assembly=EMR.Controls.hpi”)