Question

I possède une série de GridViews créées dynamiquement que je charge. Tout fonctionne très bien, sauf lorsque les détails de ligne sont développés je reçois une erreur « Impossible de créer un type inconnu « {clr-namespace: EMR.Controls.HPI} HPIDialogButton ». L'espace de noms EMR.Controls.HPI est dans l'exécution de l'ensemble et je peux utiliser exactement la même XAML autres lieux et cela fonctionne sans problèmes Si je commente la ligne. « HPI: HPIDialogButton ... » puis les détails de ligne se dilatent sans problème

.

Il semble au point de chargement il y a une connexion manquante qui est créé pour vous si vous faites les choses directement.

   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);
    }
Était-ce utile?

La solution

Essayez de spécifier l'assemblage dans toutes vos xmlns (vous manquez en un):

Context.XmlnsDictionary.Add ( "HPI", "clr-espace de nom: EMR.Controls.HPI; ensemble = EMR.Controls.HPI");

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top