2009-04-07 5 views
1

私はプリズムを使用しており、TabControlである領域を持っています。 TabControl.ItemTemplateのDataTemplateをIView型のインターフェイスに設定しました。 IViewにはタイトルと説明文字列があります。 RegisterViewWithRegionをIViewで呼び出すと、タブが追加されますが、ヘッダには説明が表示されません。インターフェイスのプロパティにバインドできないか、他に何か不足していますか?プリズムを使用してタブのヘッダを表示

manager.AddToRegion( "ContentZone"、new PrimaryView()); // Implements IView

<TabControl x:Name="ContentZone" cal:RegionManager.RegionName="ContentZone" Grid.Row="1" umn="0"> 
<TabControl.ItemTemplate> 
    <DataTemplate DataType="{x:Type oasis:IView}"> 
     <DockPanel ToolTip="{Binding Path=Description}"> 
      <Label Padding="0" 
        Content="{Binding Path=Title}" 
        VerticalAlignment="Center" /> 

編集:解決策は見つかりましたが、それほど素晴らしいものは見つかりませんでした。何らかの理由で、DataTemplateのDataContextは、私が何をしたとしても常にnullに戻りました。私はDataTempalteSelectorを試しましたが、項目自体もnullでした。代わりに基本抽象クラスに変更しようとしました。だから、これは私が自分自身の結合のためになってしまったものです:

{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ContentControl}}, Path=DataContext.Title} 
+0

TabItem.HeaderTemplateを使用していませんか? –

+0

うわー、分かりませんが、長い間、プリズムから移ってから長い間、それはまだ維持されていますか? – dariusriggins

答えて

0

あなたはインターフェイスとDataTemplateを関連付けることはできません。タイプに直接関連付けられている必要があります。インターフェイス経由で関連付ける場合は、項目がIViewを実装しているかどうかを確認し、それに応じてDataTemplateを返すDataTemplateSelectorを実装することを検討できます。

+0

だから私はそのショットを与えたが、SelectTemplateメソッドで返されるアイテムは常にnullです。私はそれを以下のように登録しました。ブレークポイントはヒットしますが、itemはnullです。 dariusriggins

関連する問題