2009-06-01 13 views
5

Vì vậy, tôi có một StackPanel mà tôi đang sử dụng như một ContentControl. Tôi có một nơi mà tôi muốn các nút được tạo ra dựa trên dữ liệu mà tôi ràng buộc, và đó là tất cả làm việc tốt, nhưng tôi muốn các nút được đặt ra theo chiều ngang, không theo chiều dọc như những gì đang xảy ra. Dưới đây là một ảnh chụp màn hình:Sử dụng StackPanel làm ContentControl (WPF)

alt text

Và đây là đoạn code từ mô tả ContentTemplate tôi:

<StackPanel Name="wpReleaseButtons" Orientation="Horizontal" Grid.Row="2"> 
    <ItemsControl IsTabStop="False" ItemsSource="{Binding Path=BranchCommands}"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <Button Tag="{Binding}" Padding="3"> 
        <TextBlock Text="{Binding Path=DisplayValue}" /> 
       </Button> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 
</StackPanel> 

Không chắc gì tôi đang làm sai ở đây. Bất kỳ thông tin nào cũng đều được chấp nhận. Cảm ơn!

Trả lời

9

tôi sẽ nói nó trông giống như ItemsControl là những gì đang hiển thị các nút theo chiều dọc. nếu bạn muốn các nút trong ItemsControl là ngang, sau đó bạn cần StackPanel được trong ItemsControlItemsPanelTemplate, không theo chiều ngược lại như những gì bạn có trong mã của bạn:

<ItemsControl IsTabStop="False" ItemsSource="{Binding Path=BranchCommands}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Button Tag="{Binding}" Padding="3"> 
       <TextBlock Text="{Binding Path=DisplayValue}" /> 
      </Button> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Horizontal"/> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
</ItemsControl> 

Tôi có thể là một chút sai về các bit ItemsControl.ItemsPanel vì tôi chưa có bất kỳ dữ liệu nào để kiểm tra nó với ...

Chỉnh sửa: Ngoài tham chiếu Bea, có một số nội dung tốt bằng Dr WPF.

+0

Điều này đã làm nó !!! Cảm ơn câu trả lời, và tôi đã đánh dấu trang của Bea là tốt. Cảm ơn mọi người! Điều này đã bắt đầu lỗi tôi một chút, lol. –

3

Tôi không thể nhìn thấy hình ảnh của bạn (nó bị chặn bởi tường lửa của công ty tôi), nhưng ở đây tôi đi anyways ...

của bạn 'Định hướng = 'ngang'' có lẽ làm việc như nó nên: nó chỉ chứa một phần tử con, một ItemsControl. Thay vào đó, hãy thử tạo một ControlTemplate cho ItemsControl của bạn, nơi ControlTemplate chứa một StackPanel với Orientation = "Horizontal".

Hy vọng điều này sẽ hữu ích!

Edit:

Một lần nữa, Bea đi qua với một câu trả lời/example!

http://bea.stollnitz.com/blog/?p=10

+0

+1 để tham chiếu Bea. –