DataGridにデータをセットする
var table = dataSet1.booksTable
.OrderByDescending(x => x.publishDate)
.Select(x => new { title = x.title, publish = x.publishDate});
dataGrid1.ItemsSource = table;
DataGridでカレント行の特定列の値を取得する
private void dataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
// 取得するColumnのIndexを2とする
if (dataGrid1.SelectedIndex >= 0)
{
// 必要に応じてレイアウトの更新をする
// dataGrid1.UpdateLayout();
DataGridRow row = (DataGridRow)dataGrid1.ItemContainerGenerator.ContainerFromIndex(dataGrid1.SelectedIndex);
string value = ((TextBlock)dataGrid1.Columns[2].GetCellContent(row)).Text;
}
}
DataGridTextColumn 改行・リターンキー(Enter)の許可・IME(日本語入力)
<DataGridTextColumn x:Name="memoColumn" Binding="{Binding Memo}" Header="Memo" Width="400">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="TextWrapping" Value="Wrap" />
<Setter Property="AcceptsReturn" Value="True"/>
<Setter Property="InputMethod.PreferredImeState" Value="On" />
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
DataGridのColumnのフォーマット
<DataGridTextColumn Binding="{Binding createDate, StringFormat=yyyy/MM/dd hh:mm}" Width="100" Header="post" />
Columnテキストの右寄せ
<DataGridTextColumn Binding="{Binding Id}">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}" >
<Setter Property="TextAlignment" Value="Right" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
コードによるテキストの右寄せ
Style style = new Style(typeof(DataGridCell));
style.Setters.Add(new Setter(HorizontalAlignmentProperty, HorizontalAlignment.Right));
dataGrid1.Columns[1].CellStyle = style;
ヘッダーの右寄せ
<DataGridTextColumn Binding="{Binding Name}" Header="Name">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader" >
<Setter Property="HorizontalContentAlignment" Value="Right" />
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
Columnテキストのマージン
<DataGridTextColumn Binding="{Binding Name}" Header="Name">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}" >
<Setter Property="Margin" Value="2,0,0,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
DataGridにButton Columnを追加する
DataGridにボタン行を追加する
<DataGridTemplateColumn Header="BUTTON" Width="SizeToHeader">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button x:Name="myButton" Click="myButton_Click" Content="{Binding ID}"></Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
DataGridのButton ColumnのBindigデータにテキストを加えて表示する
ContentStringFormat=”{}ID {0} Open”を追加する
表示例 : ID 333 OPEN
<Button x:Name="myButton" Click="myButton_Click" Content="{Binding ID}" ContentStringFormat="{}ID {0} Open"></Button>
列を固定する
DataGridのFrozenColumnCount プロパティに固定したい列の左からの順番を指定する
dataGrid1.FrozenColumnCount = 2;
CustomFilterを使って絞り込む
CollectionViewSource dataGridViewSource = ((CollectionViewSource)(FindResource("dataGridViewSource")));
BindingListCollectionView myView = ((BindingListCollectionView)dataGridViewSource.View);
if (!myView.IsAddingNew && !myView.IsEditingItem)
myView.CustomFilter = "Id=10";
入力した値の検証
public bool IsValid(DependencyObject dataGrid)
{
if (Validation.GetHasError(dataGrid))
return false;
// Validate all the bindings on the children
for (int i = 0; i != VisualTreeHelper.GetChildrenCount(dataGrid); ++i)
{
DependencyObject child = VisualTreeHelper.GetChild(dataGrid, i);
if (!IsValid(child)) { return false; }
}
return true;
}