2010-10-01 18 views
9

我有以下WPF的ListView:控制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> 

我想在第二的GridColumn的複選框對準中心。設置HorizontalAlignment="Center"似乎並沒有辦法。如何在XAML中實現這一點?

回答

17

要在你需要設置ListView.ItemContainerStyle有彈力的水平排列如下一個ListView中心內容:

<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

工作就像一個魅力,THX! – sean717 2010-10-04 20:35:03

+0

謝謝,這工作得很好。但爲什麼不將Horizo​​ntalContentAlignment設置爲「中心」? – 2014-03-06 18:02:20

+1

@GordonSlysz我認爲發生了什麼是列表視圖項目的每列中有一個「隱藏」容器。在您的複選框中設置「中心」會將其置於您看不到的容器內部,但該容器將向左對齊並被自動調整以適合您的複選框。所以看起來你的複選框不是居中。將ListViewItem的Horizo​​ntalContentAlignment設置爲Stretch使得這個容器填滿整個列,所以現在當你的複選框居中時,它看起來就像你期望的那樣。 – Nick 2015-05-05 19:42:45