2010-12-21 2 views
0

로드하는 일련의 동적으로 생성 된 GridView가 있습니다. 행 세부 정보를 확장 할 때를 제외하고는 모두 잘 작동합니다 "알 수없는 유형 '{clr-namespace : EMR.Controls.HPI} HPIDialogButton을 만들 수 없습니다."네임 스페이스 EMR.Controls.HPI가 실행 어셈블리에 있으며 사용할 수 있습니다. 정확히 동일한 XAML 다른 장소 및 문제없이 작동합니다. 'hpi : HPIDialogButton ...'줄을 주석으로 처리하면 행 세부 정보가 문제없이 확장됩니다 ..동적으로 XAML로드

로드 포인트에 누락 된 부분이 있습니다. 직접 일을 할 경우 생성됩니다

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

답변

3

시도를 (당신이 하나를 놓치지) 모든 XMLNS에 어셈블리를 지정하려면.

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