2010-09-16 19 views

Trả lời

32

ItemsControl là khái niệm một điều khiển mà nhà các mặt hàng. Hãy cố gắng chỉ đơn giản là nghĩ về điều khiển này như một người giữ cho không hoặc nhiều đối tượng.

ItemsPresenter hơi khó giải thích hơn, nhưng đây là một phần của mẫu ItemsControl sẽ xác định vị trí các mục được đặt trong đó. Mẫu ItemsControl của bạn có thể là bất cứ thứ gì bạn thích, nói Grid với một số hình ảnh đẹp xung quanh nó, bên trong mẫu này, bạn sẽ đặt ItemsPresenter ở nơi nào bạn muốn các mục của mình, nói ngay ở giữa lưới của bạn. (Ví dụ này được lấy từ msdn và đơn giản hóa cho dễ đọc)

<Style TargetType="HeaderedItemsControl"> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type HeaderedItemsControl}"> 
      <Grid> 
      <Rectangle Stroke="Black" Fill="Red"/> 
      <ItemsPresenter Margin="2,0,0,0"/> 
      </Grid> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 

Các ItemsPanel là bảng điều khiển (hoặc container) điều khiển cách bố trí của các mục trong ItemsControl của bạn. Vì vậy, nếu bạn muốn các mục của bạn mà bạn đã thêm vào ItemsControl của bạn để hiển thị một cách horizotal, sau đó yor mục bảng điều khiển có thể chỉ đơn giản là một StackPanel với thuộc tính Orientation của nó thiết lập để ngang.

Tất cả điều này có ý nghĩa?

+0

Nếu bạn có thể đưa ra một ví dụ về tất cả 3 được sử dụng .. sẽ là tuyệt vời. Ví dụ msdn mà tôi đã đi qua trước đó không phải là tuyệt vời (tức là nó đẫm máu sucks) Vì vậy, tôi nghĩ rằng các itemspresenter là chuyển ControlTemplate mà có thể chứa một ItemsPanel để chứa thêm các mục trong ControlTemplate? – bcm

+0

là một câu hỏi khái niệm hoặc bạn đang gặp khó khăn khi cố gắng tạo ItemsControl của riêng mình? – Mark

+0

khái niệm, nhưng chỉ muốn hiểu nó tốt. – bcm

5

Tôi nghĩ rằng điều này khá nhiều giải thích như thế nào những điều được thực hiện bằng Silverlight: ItemsPanelTemplate Class: Chỉ định bảng rằng ItemsPresenter tạo cho việc bố trí các hạng mục của một ItemsControl. ItemsPanelTemplate Class

<Style TargetType="local:myItemsControl"> 
    <Setter Property="ItemsPanel"> 
     <Setter.Value> 
      <ItemsPanelTemplate> 
       <StackPanel Orientation="Vertical"/> 
      </ItemsPanelTemplate> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="local:myItemsControl"> 
       .... 
       <ItemsPresenter /> 
       .... 

Về cơ bản, ItemPresenter (quy định tại Mẫu) sẽ được thay thế bằng bất cứ điều gì được quy định trong ItemsPanelTemplate.

Vì vậy, các mẫu có thể được mở rộng để bao gồm một tiêu đề và tất cả các con sẽ được đặt dưới tiêu đề này:

<Grid> <TextBlock Text="Header"/> <ItemsPresenter /> </Grid> 
Các vấn đề liên quan