2012-01-27 41 views
4

GridViewColumn内のWPF CheckBoxを中央に配置する方法は?GridViewColumn内のWPF CheckBoxを中央に配置する方法は?

<GridViewColumn Width="60" Header="Success"> 
    <GridViewColumn.CellTemplate> 
     <DataTemplate> 
       <CheckBox IsChecked="{Binding Path=IsSuccess}">             
       </CheckBox> 
      </DataTemplate> 
    </GridViewColumn.CellTemplate> 
</GridViewColumn> 

UPDATES:

このソリューションは正常に動作しますが、それは細胞の発現ダークテーマ... を破壊する(私はそれを修正する方法を知っているためわかりません...)

<ListView Name="HistoryTable" Width="783" VerticalAlignment="Stretch" VerticalContentAlignment="Top" Height="195"> 
          <ListView.ItemContainerStyle> 
           <Style TargetType="ListViewItem"> 
            <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
           </Style> 
          </ListView.ItemContainerStyle> 
          <ListView.Resources> 
           <Style TargetType="{x:Type CheckBox}" x:Key="DataGridCheckBox"> 
            <Setter Property="HorizontalAlignment" Value="Center" /> 
            <Setter Property="HorizontalContentAlignment" Value="Center" /> 
            <Setter Property="IsEnabled" Value="False" /> 
            <Setter Property="Margin" Value="4" /> 
            <Setter Property="VerticalAlignment" Value="Center" /> 
            <Setter Property="VerticalContentAlignment" Value="Center" /> 
            <Setter Property="Width" Value="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type GridViewColumn}},Path=ActualWidth}" /> 
           </Style> 
          </ListView.Resources> 
          <ListView.View>          
           <GridView> 
            <GridViewColumn DisplayMemberBinding="{Binding Filename}" Width="140" Header="{lex:LocTextExtension Key=Name, Dict=Resources, Assembly=PreShow.Player}" /> 
            <GridViewColumn Width="60" Header="{lex:LocTextExtension Key=Success, Dict=Resources, Assembly=PreShow.Player}"> 
             <GridViewColumn.CellTemplate> 
              <DataTemplate> 
               <DockPanel HorizontalAlignment="Center"> 
                <CheckBox IsChecked="{Binding Path=IsSuccess}" Style="{StaticResource DataGridCheckBox}">             
                </CheckBox> 
               </DockPanel> 
              </DataTemplate> 
             </GridViewColumn.CellTemplate> 
            </GridViewColumn> 

enter image description here

+0

私はここで混乱していました。私は答えを削除しました。ノイズは申し訳ありません。 – Clemens

+0

答えはH.Bです。 - BasedOnプロパティがありません – hyp

答えて

4

これは、ベアボーンセットアップする必要があります:

<ListView.Resources> 
    <!-- Alternatively use the ItemContainerStyle of course --> 
    <Style TargetType="ListViewItem" BasedOn="{StaticResource {x:Type ListViewItem}}"> 
     <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
    </Style> 

    <!-- Use BasedOn to preserve existing style --> 
    <Style TargetType="CheckBox" BasedOn="{StaticResource {x:Type CheckBox}}"> 
     <Setter Property="VerticalAlignment" Value="Center"/> 
     <Setter Property="HorizontalAlignment" Value="Center"/> 
    </Style> 
</ListView.Resources> 
+0

ソリューションは動作しますが、エクスプレッションダークテーマを破棄します。私は何が起こるかをスクリーンショットに入れるために投稿を更新するつもりです。 –

+0

@DmitryBoyko: 'ListViewItem'に' BasedOn'を追加することはできませんでしたか? –

+0

私はWPFの大きなマスターではありません:) Expression Dark Themeのどこに追加する必要があるのか​​教えてください。 –

6

新しいGridの列幅(DataTemplate内)をGridViewの列幅の幅にバインドします。

<GridViewColumn Header="Header="{StaticResource CheckBoxHeaderText}" x:Name="CheckBoxColumn" Width="125"> 
    <GridViewColumn.CellTemplate> 
     <DataTemplate> 
      <Grid Width="{Binding ElementName=CheckBoxColumn, Path=Width}"> 
       <CheckBox HorizontalAlignment="Center" IsChecked="{Binding IsCheckBoxChecked, Mode=OneWay}" /> 
      </Grid> 
     </DataTemplate> 
    </GridViewColumn.CellTemplate> 
</GridViewColumn>