views:

4351

answers:

2

I want to apply a format (align text, format for the currency 0000.00) to the columns in the GridViewColumn.

 <GridViewColumn TextBlock.TextAlignment="Center" Width="80" DisplayMemberBinding="{Binding XPath=Name}"/>

The idea is the following one: In the columns (GridViewColumn) the text that our could apply a format to him (Aligners on the left, right, center, justify, etc.).

In the following code they can see the different attempts without obtaining any result

The code is as follows:

 <Window x:Class="ListViewTest.Test0.ListViewTest"
   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   Title="Empty ListView Grid" Height="216" Width="435" FlowDirection="LeftToRight" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.IsSharedSizeScope="False">
    <Window.Resources>
        <XmlDataProvider x:Key="CustomersDS" Source="C:\data.xml"/>
        <Style x:Key="myHeaderStyle" TargetType="{x:Type GridViewColumnHeader}">
            <Setter Property="Visibility" Value="Collapsed" />
        </Style>
    </Window.Resources>



    <ListView Margin="0,0,0,50" ItemTemplate="{DynamicResource CustomerTemplate}" ItemsSource="{Binding Source={StaticResource CustomersDS}, XPath=/Customers/Customer}">
        <ListView.View>
            <!--ColumnHeaderContainerStyle="{StaticResource myHeaderStyle}"-->
            <GridView >
                <GridViewColumn Width="80" TextBlock.TextAlignment="Center">
                    <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock HorizontalAlignment="Center" Text="{Binding XPath=Code}"></TextBlock>
                    </DataTemplate>
                  </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn TextBlock.TextAlignment="Center" Width="80" DisplayMemberBinding="{Binding XPath=Name}"/>
                <GridViewColumn Width="120" TextBlock.TextAlignment="center" DisplayMemberBinding="{Binding XPath=Country}"/>
                <GridViewColumn Width="120" TextBlock.TextAlignment="center" DisplayMemberBinding="{Binding XPath=money}"/>
            </GridView>
        </ListView.View>
    </ListView>


</Window>

XML

     <Customers>
  <Customer>
 <Code>1234</Code>
 <Name>EPI</Name>
 <Country>Sesame Street</Country>
<money> 98.00</money>
  </Customer>
  <Customer>
 <Code>3234</Code>
 <Name>Paul</Name>
 <Country>United Kingdom</Country>
<money> 8.70</money>
  </Customer>
 <Customer>
 <Code>3344</Code>
 <Name>Juan</Name>
 <Country>Spain</Country>
<money> 785.5</money>
  </Customer>
 <Customer>
 <Code>4321</Code>
 <Name>Dodo</Name>
 <Country>Venezuela</Country>
<money> 150.02</money>
  </Customer>
</Customers>
+1  A: 

To have a stringformat for currency for example, you can use "StringFormat" which was introduced on the binding object in .net3.5 sp1 I think.

Text="{Binding XPath=Code, StringFormat=0.000}"

Besides that, I must say I don't quite understand your question either.

Tom Deleu
Thank you very much for your answer, but can not get it to work.
Ozplc
Hmm indeed. Doesn't work here either. Seems like the XML you are reading already is a string, and the format function doesn't wsork there.Other possibility: value converters: http://www.kirupa.com/blend_wpf/value_converters_pg1.htm
Tom Deleu
+3  A: 

Here is how I did something similar (format and align a currency column):

<GridViewColumn Header="Amount">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <TextBlock TextAlignment="Right"
                       Text="{Binding Path=Amount, StringFormat='{}{0:C}'}" />
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

I also added this style:

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

If you aren't using .NET 3.5 SP1, you'll need to use a converter instead of the StringFormat.

Ryan Versaw