[DEVEXPRESS/WPF] DataControlBase 클래스 : AutoGeneratedColumns 이벤트를 사용해 데이터 바인딩 시 모든 컬럼이 생성된 후 처리하기
DevExpress/WPF 2014. 3. 14. 09:00728x90
반응형
728x170
▶ XAML
<Window
x:Class="HowToCustomizeAutomaticallyGeneratedColumns.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:local="clr-namespace:HowToCustomizeAutomaticallyGeneratedColumns"
Title="Customize Automatically Generated Columns"
Width="600"
Height="450">
<Window.Resources>
<local:IssueTypeToSolidColorBrushValueConverter x:Key="IssueTypeToSolidColorBrushValueConverterKey" />
<DataTemplate x:Key="IssueTypeDataTemplateKey">
<dxe:TextEdit x:Name="PART_Editor"
Foreground="{Binding Path=Value, Converter={StaticResource IssueTypeToSolidColorBrushValueConverterKey}}" />
</DataTemplate>
</Window.Resources>
<Grid>
<dxg:GridControl x:Name="gridControl"
AutoGenerateColumns="AddNew"
AutoGeneratedColumns="gridControl_AutoGeneratedColumns">
<dxg:GridControl.View>
<dxg:TableView Name="tableView"
AutoWidth="True" />
</dxg:GridControl.View>
</dxg:GridControl>
</Grid>
</Window>
728x90
▶ C#
#region 그리드 컨트롤 자동 생성 컬럼 처리하기 - gridControl_AutoGeneratedColumns(sender, e)
/// <summary>
/// 그리드 컨트롤 자동 생성 컬럼 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void gridControl_AutoGeneratedColumns(object sender, RoutedEventArgs e)
{
foreach(GridColumn gridColumn in this.gridControl.Columns)
{
if(gridColumn.FieldName == "IssueName")
{
string cellTemplate = @"
<DataTemplate
xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml""
xmlns:dxe=""http://schemas.devexpress.com/winfx/2008/xaml/editors"">
<dxe:TextEdit x:Name=""PART_Editor"" Foreground=""Blue"" />
</DataTemplate>";
gridColumn.CellTemplate = XamlReader.Parse(cellTemplate) as DataTemplate;
gridColumn.SortOrder = ColumnSortOrder.Ascending;
}
else if(gridColumn.FieldName == "IssueType")
{
gridColumn.CellTemplate = Application.Current.MainWindow.Resources["IssueTypeDataTemplateKey"] as DataTemplate;
}
else if(gridColumn.FieldName == "ID")
{
gridColumn.Visible = false;
}
}
}
#endregion
728x90
반응형
그리드형(광고전용)
댓글을 달아 주세요