2009-03-17 4 views
5

GridViewColumn의 열에 서식을 적용 (통화 정렬 0000.00의 텍스트, 서식을 정렬)하고 싶습니다.GridViewColumn의 WPF 텍스트 서식

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

아이디어는 다음 중 하나입니다 : 열 (GridViewColumn) 우리가 그에게 서식을 적용 할 수있는 텍스트에서 (왼쪽 얼 라이너, 오른쪽, 중앙, 등을 정당화). 다음 코드에서

그들이 어떤 결과를 얻지 않고 다양한 시도를 볼 수 있습니다

다음과 같이 코드는 다음과 같습니다

<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

이 질문이 커뮤니티 위키 인 이유는 무엇입니까? –

답변

17

내가 비슷한 (형식과 일치 통화 열) 한 방법이다 StringFormat 대신 변환기를 사용해야합니다.

+0

모든 단일 열에 대해이 작업을 수행해야합니까? – Stylzs05

+0

@ Stylzs05 - 예. 승리를위한 WPF :( – JumpingJezza

2

는 통화에 대한있는 StringFormat에 대한이려면 예를 들어, .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 –