Pregunta

Tengo una serie de GridViews creadas dinámicamente que me carga. Todo funciona bien excepto cuando los datos de fila se expandieron consigo un error "No se puede crear un tipo desconocido '{clr-espacio de nombres: EMR.Controls.HPI} HPIDialogButton'. El espacio de nombres EMR.Controls.HPI es en el montaje de ejecutar y puedo usar exactamente el mismo XAML otros lugares y que funciona sin problemas Si comento hacia fuera de la línea. 'hpi: HPIDialogButton ...', entonces los datos de fila se expanden sin problemas

.

Parece al punto de carga hay alguna conexión que falta que se crea para usted si haces las cosas directamente.

   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);
    }
¿Fue útil?

Solución

Trate de especificar el montaje en todas sus xmlns (se olvida de que en uno):

Context.XmlnsDictionary.Add ( "hpi", "clr-espacio de nombres: EMR.Controls.HPI; montaje = EMR.Controls.HPI");

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top