WPF Style DataRow

索引サイト
「普通に足し算」




<Window.Resources>
<Style x:Key="xCenter" TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="2"/>
<Setter Property="TextAlignment" Value="Center"/>
</Style>
<Style x:Key="xRight" TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="2"/>
<Setter Property="TextAlignment" Value="Right"/>
<Setter Property="FontSize" Value="22"/>
</Style>
<Style x:Key="xDummy" TargetType="DataGridCell">
<Setter Property="Background" Value="WhiteSmoke"/>
</Style>
<Style x:Key="xLockedColor" TargetType="DataGridCell">
<Setter Property="Background" Value="PowderBlue"/>
</Style>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Yellow" />
<Setter Property="BorderBrush" Value="Goldenrod" />
<Setter Property="Foreground" Value="Black" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Canvas Height="500" Name="canvas1" Width="500">
<Grid Height="500" Width="500">
<Grid.RowDefinitions>
<RowDefinition Height="1*" />
<RowDefinition Height="7*" />
<RowDefinition Height="1*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="7*" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<DataGrid AutoGenerateColumns="False" Margin="5" Name="dataGrid1"
PreviewLostKeyboardFocus="dataGrid1_PreviewLostKeyboardFocus"
Grid.Column="1" Grid.Row="1">
<DataGrid.Columns>
<DataGridTextColumn IsReadOnly="True" Header="No" Binding="{Binding Path=number}" CellStyle="{StaticResource xLockedColor}"/>
<DataGridTextColumn IsReadOnly="False" Header="入力" Binding="{Binding tenkey,StringFormat=N0}"/>
<DataGridTextColumn IsReadOnly="True" Header="金額" Binding="{Binding amount,StringFormat=N0}" ElementStyle="{StaticResource xRight}" CellStyle="{StaticResource xLockedColor}"/>
<DataGridTextColumn IsReadOnly="True" Header="-->" CellStyle="{StaticResource xDummy}"/>
<DataGridTextColumn IsReadOnly="True" Header="合計" Binding="{Binding goukei,StringFormat=N0}" ElementStyle="{StaticResource xRight}" CellStyle="{StaticResource xLockedColor}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Canvas>

using System.Data;




namespace WpfApplication1
{
///
/// MainWindow.xaml の相互作用ロジック
///

public partial class MainWindow : Window
{
DataTable z_tabele01 = new DataTable("table01");
public MainWindow()
{
InitializeComponent();
z_tabele01.Columns.Add("number");
z_tabele01.Columns.Add("tenkey");
z_tabele01.Columns.Add("amount");
z_tabele01.Columns.Add("goukei");
dataGrid1.ItemsSource = z_tabele01.DefaultView;
}
private void dataGrid1_PreviewLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
double w_amount = 0;
double w_total = 0;
int idx = 0;
foreach (DataRow w_dataRow in z_tabele01.Rows)
{
try
{
w_amount = Convert.ToDouble(w_dataRow["tenkey"]);
w_total += w_amount;
}
catch { }
w_dataRow["amount"] = string.Format("{0:N0}", w_amount);
w_dataRow["goukei"] = string.Format("{0:N0}", w_total);
idx++;
w_dataRow["number"] = idx;
}
dataGrid1.ItemsSource = z_tabele01.DefaultView;
}
}
}



AX