您可以使用 aDataGridTemplateColumn
而不是DataGridTextColumn
,然后设计一个模板,以按照您的意愿进行布局。
我给出的例子只是为了给你一些入门的想法。
您可能需要根据您希望对齐的完美程度进行调整,例如,如果您希望“,”完美对齐,那么您必须将您的货币价值分成欧元和美分部分,以便您可以放置将该数据放入模板中的不同元素中。
您可以在绑定上使用转换器来接受 DisplayTotalAmount,它会返回仅欧元部分或仅美分部分(您也可以通过其他方式执行此操作)。
我使用颜色来更清楚地显示不同的部分。
我已经指定了固定值(123,99)...替换为绑定...您可能使用的一些示例绑定:
{Binding DisplayTotalAmount, Mode=OneWay}
{Binding DisplayTotalAmount, Mode=OneWay, Converter={StaticResource extracteurosconv}}
{Binding DisplayTotalAmount, Mode=OneWay, Converter={StaticResource extractcentsconv}}
等等
如果您想要一个可编辑的版本,那么您还可以定义 aCellEditingTemplate
并使用 aTextBox
而不是 a TextBlock
。
我给你几个例子来向你展示不同的布局方式......你可以调整它们,例如添加填充、不同的宽度等。
示例 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:
<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>
示例 3:
<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>
您可以使用这部分 XAML 在 KAXAML 中进行一些布局:
<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>