2013-06-27 94 views
1

我明顯錯過了一些非常基本的東西。我發現了類似的問題,但沒有一個答案能夠理解我做錯了什麼。WPF在控件上設置DataTemplate和ControlTemplate不起作用

當我設置ControlTemplate時,我的DataTemplate沒有被拾取。

我創建了我的問題很簡單的例子:

<Window x:Class="WpfTesterProject.Window1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:local="clr-namespace:WpfTesterProject" 
     Title="Window1" Height="300" Width="300"> 

    <Window.Resources> 
     <DataTemplate DataType="{x:Type local:Person}"> 
      <StackPanel> 
       <TextBlock Text="{Binding FirstName}" /> 
       <TextBlock Text="{Binding LastName}" /> 
      </StackPanel> 
     </DataTemplate> 
    </Window.Resources> 

    <ContentControl Content="{Binding Content}"> 
     <ContentControl.Template> 
      <ControlTemplate> 
       <Border BorderBrush="Blue" BorderThickness="2"> 
        <ContentPresenter /> 
       </Border> 
      </ControlTemplate> 
     </ContentControl.Template> 
    </ContentControl> 
</Window> 

我想要做的就是在運行時加載選擇用戶自定義數據模板,但我也希望,例如,包裝的每一個無論用戶模板是什麼,或者即使他根本沒有指定任何模板,也是如此。

從我從類似問題中讀到的內容,我必須在ControlTemplate中使用<ContentPresenter />,但結果與刪除它相同 - 只顯示邊框。

+0

您可以顯示代碼隱藏?什麼是窗口的數據上下文? – Bas

+0

沒有代碼。 DataContext是'new {Content = any_object_possible}' – Markos

回答

3

我轉載了你的申請。看來問題是在ControlTemplateTargetType屬性:

<ContentControl Content="{Binding}"> 
    <ContentControl.Template> 
     <ControlTemplate TargetType="ContentControl"> 
      <Border BorderBrush="Blue" BorderThickness="2"> 
       <ContentPresenter /> 
      </Border> 
     </ControlTemplate> 
    </ContentControl.Template> 
</ContentControl> 
+0

哦,那就是它?難怪我在類似的問題上找不到解決方案。沒有人會問這樣愚蠢的問題。 Thanx :-) – Markos

+0

應該設置屬性不是很明顯;) – Bas

相關問題