DataGridTemplateColumn
の代わりにを使用して、DataGridTextColumn
希望どおりにレイアウトするテンプレートを設計することもできます。
私が提供する例は、始めるためのいくつかのアイデアを提供するためのものです。
配置をどの程度完璧にするかに応じて調整する必要がある場合があります。たとえば、「、」を完全に配置する場合は、通貨の値をユーロとセントの部分に分割して、配置できるようにする必要があります。そのデータをテンプレートのさまざまな要素に入れます。
バインディングでコンバーターを使用してDisplayTotalAmountを受け入れると、ユーロのみの部分、またはセントのみの部分が返されます(これを行う方法は他にもあります)。
さまざまな部分をより明確に示すために、色を使用しました。
固定値(123,99)を指定した場合...バインディングに置き換えます...使用する可能性のあるバインディングの例:
{Binding DisplayTotalAmount, Mode=OneWay}
{Binding DisplayTotalAmount, Mode=OneWay, Converter={StaticResource extracteurosconv}}
{Binding DisplayTotalAmount, Mode=OneWay, Converter={StaticResource extractcentsconv}}
等
編集可能なバージョンが必要な場合は、を定義し、の代わりにをCellEditingTemplate
使用します。TextBox
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>