2010-05-23 4 views
2

Я пытаюсь центрировать выравнивание данных в ListView/Gridview, где я использую DisplayMemberBinding.WPF ListView GridView DisplayMemberBinding Center alignin content

Это (частично), как мой GridView выглядит:

<ListView> 
    <ListView.View> 
     <GridView> 
      <GridView.Columns> 
       <GridViewColumn DisplayMemberBinding="{Binding Path=Timi}" Width="Auto"> 
        <GridViewColumnHeader Content="Tími" Click="GridViewColumnHeader_Click" ></GridViewColumnHeader> 
       </GridViewColumn> 
      </GridView.Columns> 
     </GridView> 
    </ListView.View> 
</ListView> 

Я пытался использовать CellTemplate, как описано на этой странице http://msdn.microsoft.com/en-us/library/system.windows.controls.gridviewcolumn.celltemplate.aspx , но он не работает, а потом я где-то читал, что один никогда не должен используйте cellTemplate и DisplayMemberBinding вместе.

Итак, вопрос в следующем: как мне центрировать данные сетки, когда я использую DisplayMemberBinding для привязки данных к gridview?

Заранее спасибо.

ответ

5

Я понял, как это сделать, но мне пришлось многое изменить.
я следовал за информацию об этой ссылке:
How to autosize and right-align GridViewColumn data in WPF?

первую очередь я должен был добавить это в мой файл ресурсов:

<Style TargetType="ListViewItem"> 
    <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
</Style> 

, а затем изменить мой ListView так это выглядело так:

<ListView > 
    <ListView.View> 
     <GridView> 
      <GridView.Columns> 
       <GridViewColumn> 
        <GridViewColumnHeader Content="ColName" Click="GridViewColumnHeader_Click" ></GridViewColumnHeader> 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding Path=col1, StringFormat='0.00'}" TextAlignment="Center" /> 
         </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
       <GridView.Columns> 
      <GridView> 
    <ListView.View> 
<ListView > 

Спасибо за помощь
Bigginn

+0

ну, технически мне пришлось избавиться от тега DisplayMemberBinding :) – Bigginn

+0

Спасибо! Да, когда я удалил тег DisplayMemberBinding, этот метод работал отлично! –

0

Попробуйте использовать HorizontalContentAlignment="Center" на GridViewColumnHeader и посмотрите, поможет ли это.

+0

Я только что попробовал, но по какой-то причине это не работает. – Bigginn

4

Это намного проще, и вы можете использовать тег DisplayMemberBinding.

<ListView ItemsSource="{Binding Song}" TextBlock.FontSize="32"> 
    <ListView.ItemContainerStyle> 
     <Style TargetType="ListViewItem"> 
      <Setter Property="HorizontalContentAlignment" Value="Center"/> 
     </Style> 
    </ListView.ItemContainerStyle> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="Title" DisplayMemberBinding="{Binding Title}"/> 
      <GridViewColumn Header="Artist" DisplayMemberBinding="{Binding Artist}"/> 
     </GridView> 
    </ListView.View> 
</ListView> 
+0

Удивительно, я понятия не имею, почему вы были проголосованы. – gbhall

+1

@gbhall спасибо: D – rwinzhang

Смежные вопросы