2016-07-12 11 views
0

いくつかのtelerikコンポーネントを使用していますが、次のことを試みています。TabCollection私はConfigurationTabの観測可能なコレクションです。このコレクション(これは私が管理している並べ替えを持っている)私は現在のタブをRadPropertyGrid私はプロパティの(カスタム)コレクションをバインドする表示する必要があります。次のように私は、現在のコードを使用して取得 (XAML)データパターンを使用して、ラジカルとプロパティグリッドを動的にロードする

<UserControl.Resources> 
    <DataTemplate x:Key="TabCollectionTemplate"> 
     <telerik:RadPane CanUserClose="False" Header="{Binding DisplayName}"> 
      <telerik:RadPropertyGrid Margin="0,4,0,4" 
            assistant:PropertyGridAssistant.AllowDescription="True" 
            assistant:PropertyGridAssistant.AllowReset="True" 
            valid:ValidationAssistant.IsEnabled="True" 
            valid:ValidationAssistant.IsValid="{Binding IsTaskValid, 
                       Mode=OneWayToSource}" 
            BorderThickness="0,0,0,0" 
            DockPanel.Dock="Top" 
            EnableEditorCaching="False" 
            Item="{Binding Path=TabPropertyCollection, 
                UpdateSourceTrigger=PropertyChanged}" 
            SearchBoxVisibility="Collapsed" 
            SortAndGroupButtonsVisibility="Visible" /> 
     </telerik:RadPane> 
    </DataTemplate> 
</UserControl.Resources> 
<Grid> 
    <telerik:RadDocking Name="ConfigurationDocking"> 
     <telerik:RadDocking.DocumentHost> 
      <telerik:RadSplitContainer InitialPosition="DockedRight"> 
       <telerik:RadPaneGroup ItemTemplate="{StaticResource TabCollectionTemplate}" ItemsSource="{Binding TabCollection}" /> 
      </telerik:RadSplitContainer> 
     </telerik:RadDocking.DocumentHost> 
    </telerik:RadDocking> 
</Grid> 

C#

public class ConfigurationTab : ObservableObject 
{ 
    private string mDisplayName = string.Empty; 
    private Property.Management.Properties mProperties = new Property.Management.Properties(); 

    public string DisplayName 
    { 
     get 
     { 
      return mDisplayName; 
     } 
     set 
     { 
      mDisplayName = value; 
      this.RaisePropertyChanged(() => this.DisplayName); 
     } 
    } 

    public Property.Management.Properties TabProperties 
    { 
     get 
     { 
      return mProperties; 
     } 
     set 
     { 
      mProperties = value; 
      this.RaisePropertyChanged(() => this.TabProperties); 
      this.RaisePropertyChanged(() => this.TabPropertyCollection); 
     } 
    } 

    public PropertiesToPropertyGridAdapter<DescriptorOfProperty> TabPropertyCollection 
    { 
     get 
     { 
      return new PropertiesToPropertyGridAdapter<DescriptorOfProperty>(mProperties); 
     } 
    } 

ものに見えますが、タブのヘッダが正しく入力されています

コードは、以下の通りであります enter image description here

:問題である「IOLAN.ModuleConfigurationTester.ConfigurationTabを」:表示名が、ペインの内容はしか表示一部と私は2番目のタブをクリックすると

はまた、私はnull参照の例外を取得:

System.NullReferenceException occurred 
Message: Exception thrown: 'System.NullReferenceException' in Telerik.Windows.Controls.Docking.dll 
Additional information: Object reference not set to an instance of an object. 

誰も私が間違ってやっているかを見ることができますか?

EDIT

私は私のデータテンプレートは、それは何も変わらない、単純なテキストボックスに変更した場合、追加するための興味深い、私はradpane =「IOLAN.ModuleConfigurationTester.ConfigurationTab」に表示してまだ私だけの事他のタブを開こうとすると、null参照を取得します:

<DataTemplate x:Key="TabCollectionTemplate"> 
    <telerik:RadPane CanUserClose="False" Header="{Binding DisplayName}"> 
     <TextBox Text="Hallo" /> 
    </telerik:RadPane> 
</DataTemplate> 

答えて

0

しばらくして私は、これはすべての解決のようにそれをやって、私は単にTablControlを使用して、コンテンツのテンプレートを設定しなければならなかった、私がしなければならなかったものを考え出しました問題:

<UserControl.Resources> 
    <DataTemplate x:Key="ContentTemplate"> 
     <telerik:RadPropertyGrid Name="PropertyGrid" 
           Margin="0,4,20,4" 
           assistant:PropertyGridAssistant.AllowDescription="True" 
           assistant:PropertyGridAssistant.AllowReset="True" 
           BorderThickness="0,0,0,0" 
           IsGrouped="True" 
           Item="{Binding Path=TabPropertyCollection, 
               UpdateSourceTrigger=PropertyChanged}" 
           SearchBoxVisibility="Collapsed" /> 
    </DataTemplate> 
    <DataTemplate x:Key="HeaderTemplate"> 
     <TextBlock Text="{Binding Path=DisplayName}" /> 
    </DataTemplate> 
</UserControl.Resources> 
<Grid> 
    <telerik:RadDocking> 
     <telerik:RadDocking.DocumentHost> 
      <DockPanel> 
       <telerik:RadTabControl ContentTemplate="{StaticResource ContentTemplate}" 
             ItemTemplate="{StaticResource HeaderTemplate}" 
             ItemsSource="{Binding TabCollection}" 
             SelectedItem="{Binding Path=SelectedItem, 
                   Mode=OneWayToSource}" /> 
      </DockPanel> 
     </telerik:RadDocking.DocumentHost> 
    </telerik:RadDocking> 
</Grid> 
関連する問題