2012-08-23 2 views
0

이것은 사소한 것처럼 보이지만 사용자가 요청한 이후로 :데이터로드 후 추가 기호를 DataGrid 셀에 추가 할 수 있습니까?

저는 서비스의 데이터로 채워진 사용자 지정 wpf gridview 컨트롤이 있습니다. 현재 내가 바꾸려고하는 열은 유로화 기호, 공백, 그리고 금액을 보여줍니다. 그러나,이는 다음과 같습니다

€ 0,15 
€ 145,35 
€ 65,00 
    € 9,50 

내가 뭘하려고 오전는 다음과 같이 만들 수 있습니다 : 나는 공간의 사용자 지정 번호를 추가 시도

€ 0,15 
€ 145,35 
€ 65,00 
€ 9,50 

하지만 나는 글꼴 이후 using은 Times가 아니며 공백의 너비는 숫자의 너비와 다릅니다. 나는이 작은 문제에 대한 해답을 몇 시간 동안 찾으려고 노력해 왔지만 그것을 찾을 수 없었다. 열은 정렬 가능하지만 편집 할 수는 없습니다.

나는 왼쪽에 € 사인을 넣고, 사인을 포함하는 왼쪽에 여분의 열을 추가하면서 특정 수의 사인이있는 열을 놓을 생각을 해왔다. (그러나 나는 충분하지 않다. 내가 그 (것)들에있는 총계를 가진 3 개의 란을 가지고 있기 때문에 그것을하는 방, 또는 문제의 란 안쪽에 아마 ... 누군가는 저를 도울 수 있는가?

내 코드 :

<DataGridTextColumn Header="Amount" SortMemberPath="TotalAmount" Binding="{Binding DisplayTotalAmount, Mode=OneWay}" 

답변

0

대신 DataGridTextColumnDataGridTemplateColumn 사용하고 당신이 원하는 방법 일을 레이아웃하는 템플릿을 디자인 할 수 있습니다.

내가 제공하는 예제는 시작하기위한 몇 가지 아이디어를 제공하기위한 것입니다.

정렬이 얼마나 좋을지에 따라 조정해야 할 수도 있습니다. 예 : ","를 완벽하게 정렬하려면 유로 값과 센트 부분으로 통화 가치를 줄여야하므로 해당 데이터를 템플릿의 다른 요소에 배치 할 수 있습니다.

Binding에서 Converter를 사용하여 DisplayTotalAmount를 수락하면 유로 전용 부분 또는 센트 전용 부분 만 반환됩니다 (다른 방법도 있습니다).

다른 부분을보다 명확하게 표시하기 위해 색상을 사용했습니다. 나는 고정 값 (123,99)을 지정한

... 바인딩 ... 몇 가지 예를 들어 바인딩으로 대체 당신은 사용할 수 있습니다 :

  • {Binding DisplayTotalAmount, Mode=OneWay}
  • {Binding DisplayTotalAmount, Mode=OneWay, Converter={StaticResource extracteurosconv}}
  • {Binding DisplayTotalAmount, Mode=OneWay, Converter={StaticResource extractcentsconv}}

편집 가능한 버전을 원할 경우 CellEditingTemplate을 정의하고 대신

몇 가지 예를 들어 레이아웃을 수행하는 다양한 방법을 보여 드리겠습니다. 패딩 추가, 다른 너비 등

예 1 :

<DataGridTemplateColumn Header="ColumnHeader"> 
<DataGridTemplateColumn.CellTemplate> 
    <DataTemplate> 
    <DockPanel LastChildFill="False" Width="70" Background="Green"> 
     <TextBlock DockPanel.Dock="Left" Text="€"/> 
     <TextBlock DockPanel.Dock="Right" Text="123,99" Background="Red"/> 
    </DockPanel> 
    </DataTemplate> 
</DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

예 2 : XAML의이 비트를 사용할 수 있습니다

<DataGridTemplateColumn Header="ColumnHeader"> 
<DataGridTemplateColumn.CellTemplate> 
    <DataTemplate> 
     <Grid> 
     <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="50"/> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="20"/> 
     </Grid.ColumnDefinitions> 
     <TextBlock Text="€"/> 
     <TextBlock Grid.Column="1" HorizontalAlignment="Right" Text="123"/> 
     <TextBlock Grid.Column="2" Text=","/> 
     <TextBlock Grid.Column="3" Text="99"/> 
    </Grid> 
    </DataTemplate> 
</DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

레이아웃 A를 KAXAML에 놀러 : 예 3

<DataGridTemplateColumn Header="ColumnHeader"> 
<DataGridTemplateColumn.CellTemplate> 
    <DataTemplate> 
    <DockPanel LastChildFill="False" Width="70" Background="Green"> 
      <TextBlock DockPanel.Dock="Left" Text="€"/> 
      <StackPanel DockPanel.Dock="Right" Orientation="Horizontal"> 
       <TextBlock>,</TextBlock> 
       <TextBlock Width="20" Background="Red" Text="99"/> 
      </StackPanel> 
      <TextBlock DockPanel.Dock="Right" Background="Blue" Text="123"/> 
    </DockPanel> 
    </DataTemplate> 
</DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

비트 :

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <StackPanel> 
<DockPanel LastChildFill="False" Width="70" Background="Green"> 
      <TextBlock DockPanel.Dock="Left" Text="€"/> 
      <TextBlock DockPanel.Dock="Right" Text="123,99" Background="Red"/> 
</DockPanel> 
<DockPanel LastChildFill="False" Width="70" Background="Green"> 
      <TextBlock DockPanel.Dock="Left" Text="€"/> 
      <StackPanel DockPanel.Dock="Right" Orientation="Horizontal"> 
       <TextBlock>,</TextBlock> 
       <TextBlock Width="20" Background="Red" Text="99"/> 
      </StackPanel> 
      <TextBlock DockPanel.Dock="Right" Background="Blue" Text="123"/> 
</DockPanel> 
<Grid Background="Green"> 
<Grid.ColumnDefinitions> 
<ColumnDefinition Width="Auto"/> 
<ColumnDefinition Width="50"/> 
<ColumnDefinition Width="Auto"/> 
<ColumnDefinition Width="20"/> 
</Grid.ColumnDefinitions> 
<TextBlock Text="€"/> 
<TextBlock Grid.Column="1" HorizontalAlignment="Right" Text="123" Background="Blue"/> 
<TextBlock Grid.Column="2" Text=","/> 
<TextBlock Grid.Column="3" Text="99" Background="Red"/> 
</Grid> 
    </StackPanel> 
</Page> 
+0

완벽! 정말 고맙습니다! – Nervaryar

관련 문제