2010-12-21 21 views
0

Ich habe eine Reihe von dynamisch erstellten GridViews, die ich laden. Alles funktioniert einwandfrei, außer wenn die Zeilendetails erweitert werden Ich erhalte den Fehler "Kann keinen unbekannten Typ erzeugen" {clr-namespace: EMR.Controls.HPI} HPIDialogButton '. Der Namespace EMR.Controls.HPI befindet sich in der ausführenden Assembly und ich kann sie verwenden die gleichen XAML anderen Orten und es funktioniert ohne Probleme.Wenn ich die Zeile 'HPI: HPIDialogButton ...' auskommentieren, dann erweitern die Zeile Details ohne Probleme.Dynamisch laden XAML

Es scheint an der Ladepunkt gibt es einige Verbindung, die fehlt wenn Sie Dinge tun, direkt für Sie erstellt

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); 
    } 

Antwort

3

Try Montage in allen xmlns angeben (Sie verpassen es in einem).

Context.XmlnsDictionary.Add ("hpi", "clr-Namespace: EMR.Controls.HPI; Assembly = EMR.Controls.HPI");