2009-09-01 55 views
8

Điều tôi muốn là một điều khiển hoạt động giống như điều khiển tab nhưng thay vì có các tab dọc theo đầu, các mục sẽ được hiển thị trong một hộp danh sách dọc theo cạnh. Tôi tưởng tượng nó có thể nhưng không tìm thấy bất kỳ ví dụ, tôi hy vọng có ai đó ở đây được thực hiện một cái gì đó như thế này.Có thể tạo mẫu điều khiển tab WPF trông giống như một điều khiển tab không?

Trả lời

11

Bạn không cần sử dụng TabControl. Bạn chỉ có thể ràng buộc ListBox của bạn vào một danh sách các mục, và đặt một ContentControl bên cạnh nó, bị ràng buộc vào mục đã chọn:

<DockPanel> 
    <ListBox Name="listBox" 
      DockPanel.Dock="Left" 
      ItemsSource="{Binding Items}" 
      DisplayMemberPath="Name"/> 
    <ContentControl Content="{Binding SelectedItem, ElementName=listBox}" 
        ContentTemplate="{StaticResource theTemplate}"/> 
</DockPanel> 
+0

He-he :). Bạn đã viết nhanh hơn tôi nhấn nút "Đăng câu trả lời của bạn". Chỉ muốn viết về kịch bản chi tiết chủ với ListBox, nhưng bạn đã làm cho nó nhanh hơn :). Chúc mừng. – Anvaka

12

Điều khiển WPF được thiết kế để cho phép chính xác những gì bạn muốn. Để sử dụng lại chức năng điều khiển trong khi thay thế hoàn toàn biểu diễn trực quan. Bạn sẽ phải tạo ControlTemplate của riêng mình cho TabControl. Bạn có thể tìm thấy TabControl ControlTemplate Example on MSDN. Bạn cũng sẽ phải nghiên cứu Control Authoring Overview on MSDN.

Tôi thực sự tìm thấy tài liệu Silverlight 3 dễ tiêu hóa hơn và mặc dù có một số khác biệt khi nói đến kiểm soát kiểu dáng các khái niệm cơ bản vẫn như cũ. Bạn có thể đọc Customizing the Appearance of an Existing Control by Using a ControlTemplate on MSDN để tìm hiểu về mẫu kiểm soát và sau đó nghiên cứu TabControl Styles and Templates để khám phá những gì cần thiết để tạo mẫu kiểm soát của riêng bạn trong Silverlight.

Bạn có thể sử dụng Cụm trộn biểu thức để trích xuất mẫu TabControl mặc định trong WPF.

+3

lớn writeup rằng tổng kết sức mạnh và mục đích của WPF điều khiển độc đáo. Tôi vẫn chưa được coi là xứng đáng với khả năng bỏ phiếu, nếu không thì đây là một câu trả lời hữu ích khác mà tôi đã đưa ra. Có lẽ tôi sẽ nhớ quay trở lại với câu hỏi này vì đó là câu hỏi của riêng tôi nếu tôi từng đạt đến điểm đó. – jan

Các vấn đề liên quan