2009-03-17 16 views
5

GridViewColumnの列に書式(通貨0000.00の書式のテキストを整列)を適用したいとします。GridViewColumnのWPFテキスト書式設定

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

アイデアは、次のいずれかです。列(GridViewColumn)では、私たちは彼に書式を適用することができ、テキスト(左のアライナ、右、中央、正当化する、など)。次のように、それらがコード任意結果

を得ることなく、異なる試みを見ることができ、次のコードで

は、次のとおりのための通貨のstringformatを有すること

<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

ごめんなさいわかりません。誰か? – Ray

+0

私はよく説明しますか?助けてくれてありがとう – Ozplc

+0

なぜこの質問はコミュニティのwikiですか? –

答えて

17

は、私は似たような(フォーマットと合わせ通貨列を)やった方法ですStringFormatの代わりにコンバーターを使用する必要があります。

+0

これはすべての単一の列に対して行う必要がありますか? – Stylzs05

+0

@ Stylzs05 - うん。勝利のためのWPF :( – JumpingJezza

2

例えば、.net3.5 sp1のバインディングオブジェクトに導入された "StringFormat"を使用することができます。

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

それ以外にも、私はあなたの質問をよく理解していないと言わざるを得ない。あなたは.NET 3.5 SP1を使用していない場合は

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

:私もこのスタイルを追加

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

:ここ

+0

本当にありがとうございますが、うまく動作しません。実際には – Ozplc

+0

です。ここでもうまくいきません。あなたがすでに読んでいるXMLが文字列であり、フォーマット関数がそこにwsorkしていないようです。 その他の可能性:バリューコンバータ:http://www.kirupa.com/blend_wpf/value_converters_pg1.htm –