2010-10-01 26 views
9

Tôi có sau ListView WPF:kiểm soát trong sự liên kết ListView.GridViewColumn

<ListView Grid.Column="2" Grid.Row="1" Margin="0,53,12,6" 
Name="lvwProperties" 
ItemsSource="{Binding Path=SelectedPropertyItems, Mode=TwoWay}" 
Grid.ColumnSpan="2"> 

     <ListView.View > 

         <GridView> 
          <GridViewColumn Header="Property" DisplayMemberBinding="{Binding Path=PropertyName, Mode=TwoWay}" Width="130" /> 
          <GridViewColumn Header="Is Mandatory" Width="90" > 

           <GridViewColumn.CellTemplate> 

            <DataTemplate> 

             <CheckBox IsChecked="{Binding Path=IsMandatory, Mode=TwoWay}" HorizontalAlignment="Center" /> 

            </DataTemplate> 

           </GridViewColumn.CellTemplate> 

          </GridViewColumn> 

         </GridView> 
        </ListView.View> 
       </ListView> 

Tôi muốn làm trung tâm CheckBox liên kết trong GridColumn 2nd. Đặt số HorizontalAlignment="Center" dường như không thực hiện được thủ thuật. Làm thế nào để đạt được điều này trong XAML ???

Trả lời

17

Để nội dung trung tâm trong một ListView bạn cần phải thiết lập ListView.ItemContainerStyle để có một sự liên kết ngang của Stretch như sau:

<ListView Grid.Column="2" Grid.Row="1" Margin="0,53,12,6" Name="lvwProperties" 
      ItemsSource="{Binding Path=SelectedPropertyItems, Mode=TwoWay}" 
      Grid.ColumnSpan="2"> 
    <ListView.ItemContainerStyle> 
     <Style TargetType="ListViewItem"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
     </Style> 
    </ListView.ItemContainerStyle> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="Property" DisplayMemberBinding="{Binding Path=PropertyName, Mode=TwoWay}" Width="130" /> 
      <GridViewColumn Header="Is Mandatory" Width="90" > 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <CheckBox IsChecked="{Binding Path=IsMandatory, Mode=TwoWay}" HorizontalAlignment="Center" /> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
     </GridView> 
    </ListView.View> 
</ListView> 
+0

làm việc như một nét duyên dáng, thx! – sean717

+0

Cảm ơn điều này đã làm việc tốt. Nhưng tại sao HorizontalContentAlignment không được đặt thành 'Center'? –

+1

@GordonSlysz Tôi nghĩ rằng những gì đang xảy ra là có một "ẩn" container bên trong mỗi cột cho các mục listview. đặt "Trung tâm" trên hộp kiểm của bạn sẽ căn giữa hộp bên trong vùng chứa mà bạn không thể thấy, nhưng vùng chứa đó được căn chỉnh ở bên trái và được tự động để vừa với hộp kiểm của bạn. Vì vậy, nó xuất hiện rằng hộp kiểm của bạn không phải là trung tâm. Đặt HorizontalContentAlignment thành Stretch của ListViewItem làm cho vùng chứa này lấp đầy toàn bộ cột, vì vậy bây giờ khi hộp kiểm của bạn được căn giữa, nó trông giống như cách bạn mong đợi. – Nick

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