2009-10-19 19 views
6

Cho đến nay, tôi có điều này:Có ai có ví dụ đơn giản về UserControl với một ContentPresenter duy nhất không?

<UserControl 
    x:Class="MyConcept.ExpanderPanel" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Grid> 
     <Border 
      Style="{StaticResource Border_PanelStyle}" 
      CornerRadius="3" /> 
     <ContentPresenter /> 
    </Grid> 
</UserControl> 

sử dụng Mẫu UserControl này:

<nc:ExpanderPanel 
    Grid.Row="0"> 
    <Expander 
     IsExpanded="True" 
     Header="NMT Users"> 
     <StackPanel> 
      ... 
     </StackPanel> 
    </Expander> 
</nc:ExpanderPanel> 

Thảo luận

Nếu tôi chạy này, tôi thấy không có gì. Không có nội dung được trình bày, thậm chí không biên giới được xây dựng vào UserControl.

Tôi nghĩ có lẽ tôi cần phải tạo thuộc tính phụ thuộc ContentPresenter, nhưng tôi không thể tìm ra cách tôi sẽ liên kết thuộc tính với ContentPresenter trong XAML của UserControl.

Ai đó có thể cung cấp một ví dụ đơn giản cho biết cách tạo một UserControl (hoặc một số loại điều khiển tùy chỉnh) chỉ với một ContentPresenter?

+0

này có vẻ như nó sẽ làm các trick: http://blog.pixelingene.com/?p=24 – devuxer

Trả lời

4

ContentPresenters được sử dụng chính trong ControlTemplates và ràng buộc với một TemplateBinding đến ContentControl.Content. từ site này ... một mẫu kiểm soát đối với một nút có sử dụng một ContentPresenter

<Style TargetType="{x:Type Button}"> 
    <Setter Property="Background" Value="White" /> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate> 
     <Grid> 
      <Rectangle Fill="{TemplateBinding Property=Background}" /> 
      <ContentPresenter 
       Content="{TemplateBinding Property=ContentControl.Content}" /> 
     </Grid> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 
+0

Nó xuất hiện bây giờ, nhưng tôi không chắc làm thế nào điều này liên quan đến câu hỏi của tôi. Tôi đang cố gắng để xây dựng một điều khiển tùy chỉnh hoặc điều khiển người dùng có chứa một 'ContentPresenter', không đặt ControlTemplate cho một nút. – devuxer

+0

bạn phải sử dụng một ControlTemplate để kiểm soát của bạn, đây là một ví dụ về làm thế nào để làm như vậy. Về cơ bản, bạn phải nói với ContentControl CÁCH để hiển thị những gì bạn muốn nó hiển thị. Nó có một tập hợp các mẫu "mặc định" cho một số thứ được tích hợp sẵn. http://social.msdn.microsoft.com/forums/en-US/wpf/thread/a2988ae8-e7b8-4a62-a34f-b851aaf13886#contentpresenter –

+0

@ Muad'Dib ... bạn là hình ảnh phải là chuột – macon