2013-05-17 30 views
9

Tôi gặp sự cố với ứng dụng Windows Phone 8 ListBoxItem của mình, trong khi cố gắng khiến chúng trải rộng trên tất cả chiều rộng của ListBox.ListBoxItem HorizontalContentAlignment Để Trải rộng Toàn bộ Chiều rộng của ListBox

My ListBox:

<ListBox 
     ItemsSource="{Binding Events}" 
     behaviors:ItemClickCommandBehavior.Command="{Binding EventSelectedCommand}" 
     ItemTemplate="{StaticResource EventListTemplateSelector}"/> 

Và DataTemplates của nó đang ở trong một tập tin tài nguyên XAML riêng biệt:

<DataTemplate x:Key="EventListHeaderTemplate"> 
    <Border HorizontalAlignment="Stretch"> 
     <Grid Height="50"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*"/> 
       <ColumnDefinition Width="6*"/> 
      </Grid.ColumnDefinitions> 
      <Image Grid.Column="0" Source="{Binding ImageUri}" VerticalAlignment="Center" HorizontalAlignment="Center" Height="30"/> 
      <TextBlock Grid.Column="1" Text="{Binding SomeText}" VerticalAlignment="Center" HorizontalAlignment="Left" Foreground="Black"/> 
     </Grid> 
    </Border> 
</DataTemplate> 

tôi không thể nhận được các mục để thực sự Stretch, và tôi không biết nơi mà vấn đề là. Tôi đã cố gắng đặt ItemContainerStyle HorizontalCOntentAlignment = "Stretch" và nó không hoạt động. Tôi đã thử nhiều kết hợp khác và có vẻ như đó chỉ thiết lập các biên giới hoặc chiều rộng lưới để một công trình liên tục và một giải pháp khác mà làm việc là để thiết lập chiều rộng biên giới để ràng buộc vào ActualWidth của ListBox chứa, nhưng tôi muốn sử dụng Stretch biến thể nếu có thể làm cho nó hoạt động.

+1

Kiểm tra câu hỏi này: [Làm thế nào để có được một ListBox ItemTemplate để kéo dài theo chiều ngang toàn bộ chiều rộng của ListBox?] (Http://stackoverflow.com/questions/838828/how-to-get-a-listbox-itemtemplate- to-stretch-horizontal-the-full-width-of-the) –

Trả lời

22

Tôi chạy vào cùng một lúc trong khi phát triển một ứng dụng WP8 thương mại và nó khiến tôi tự hỏi tại sao hạt của tôi TextBlock không được tô màu toàn bộ chiều rộng.

Cách làm việc với các kiểu cạnh tranh (hoạt động với bất kỳ biến thể xaml nào thực sự là) là xác định kiểu dáng của ListBoxItem một cách rõ ràng để xử lý việc sử dụng không gian.

Điều đó cho XAML một gợi ý rằng đó là để điền vào (căng) vào vùng màn hình theo cách này:

<ListBox Name="lbTest" HorizontalContentAlignment="Stretch" > 

     <ListBox.ItemContainerStyle> 
      <Style TargetType="ListBoxItem"> 
       <Setter Property="HorizontalContentAlignment" 
         Value="Stretch"/> 
      </Style> 
     </ListBox.ItemContainerStyle> 

     <ListBox.ItemTemplate>...</ListBox.ItemTemplate> 

Nếu không phân tích cú pháp XAML, theo mặc định, cố gắng để tiết kiệm không gian bằng cách tự động định kích thước nó thành nội dung của ListBoxItem; cho nó cái nhìn scotch băng đáng sợ.

+0

Đây có phải là lỗi do Microsoft tạo ra không? Tôi đã lãng phí ba giờ cho đến khi tôi tìm thấy bài đăng của bạn. Cảm ơn bạn. – Dummy

+1

@ Dummy nó chỉ đơn giản là một chuỗi các phong cách mặc định mà đứng độc lập điều khiển có ý nghĩa, nhưng khi mang lại với nhau cho chúng tôi này .... Chào mừng đến với câu lạc bộ người tìm thấy phong cách này Easter Egg. ;-) – OmegaMan

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