2009-03-17 12 views
5

Ich möchte ein Format (Ausrichtung Text, Format für die Währung 0000.00) auf die Spalten in der GridViewColumn anwenden.WPF-Textformatierung in GridViewColumn

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

Die Idee ist folgende: In den Spalten (Gridviewcolumn) den Text, der unser ein Format für ihn gelten konnte (Aligner auf der linken Seite, rechts, Mitte, rechtfertigen, etc.).

Im folgenden Code können sie die verschiedenen Versuche sehen, ohne jedes Ergebnis

zu erhalten

Der Code ist wie folgt:

<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> 
+0

Es tut mir leid, ich kann es nicht verstehen. Irgendjemand anderes? – Ray

+0

Ich erkläre es besser? Vielen Dank für Ihre Hilfe. – Ozplc

+0

Warum ist diese Frage ein Community-Wiki? –

Antwort

17

Hier ist, wie ich habe etwas ähnliches (Format und richten eine Währungsspalte):

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

ich auch diesen Stil hinzugefügt:

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

Wenn Sie nicht .NET 3.5 SP1 verwenden , müssen Sie einen Konverter anstelle von StringFormat verwenden.

+0

Sie müssen das für jede einzelne Spalte tun? – Stylzs05

+0

@ Stylzs05 - ja. WPF für den Gewinn :( – JumpingJezza

2

Um einen String für Währung haben für Beispiel: Sie können "StringFormat" verwenden, das auf dem Bindungsobjekt in .net3.5 sp1 eingeführt wurde.

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

Abgesehen davon muss ich sagen, dass ich Ihre Frage auch nicht ganz verstehe.

+0

Vielen Dank für Ihre Antwort, aber ich kann es nicht zur Arbeit bringen. – Ozplc

+0

Hmm, in der Tat. Funktioniert hier auch nicht. Es scheint so, als ob der XML-Code, den Sie gerade lesen, eine Zeichenkette ist und die Format-Funktion dort nicht funktioniert. Andere Möglichkeit: Wert Konverter: http://www.kirupa.com/blend_wpf/value_converters_pg1.htm –

Verwandte Themen