2017-11-21 7 views
0

현재 그리드가 자동 생성 열로 변경되어서 열 스타일을 미리 정의 할 수 없습니다. 머리글 값을 기반으로 열에 대해 스타일 트리거를 설정하는 방법에 대해 궁금하네요. AutoGenerateColumns="True"스타일 트리거를 사용하여 GridViewColumn 셀 템플릿을 설정하는 방법

<telerik:GridViewColumn Header="Test"> 
    <telerik:GridViewColumn.CellEditTemplate> 
     <DataTemplate x:Key="ToggleDataTemplate"> 
      <telerik:RadToggleButton Content="+" Width="20" Height="20" 
            HorizontalContentAlignment="Center" 
            VerticalContentAlignment="Center"/> 
     </DataTemplate> 
    </telerik:GridViewColumn.CellEditTemplate> 
</telerik:GridViewColumn> 

와 미리 정의 된 열

작동 코드가 나는 셀은 빈 상태로 내가 위에서 뭘하려으로 AutoGenerateColumns="False"

<telerik:RadGridView.Resources> 
    <Style TargetType="telerik:GridViewColumn"> 
     <Style.Triggers> 
      <Trigger Property="Header" Value="Test"> 
       <Setter Property="CellTemplate" Value="{StaticResource ToggleDataTemplate}" /> 
       <Setter Property="CellEditTemplate" Value="{StaticResource ToggleDataTemplate}" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</telerik:RadGridView.Resources> 

<DataTemplate x:Key="ToggleDataTemplate"> 
    <telerik:RadToggleButton Content="+" Width="20" Height="20" 
           HorizontalContentAlignment="Center" 
           VerticalContentAlignment="Center"/> 
</DataTemplate> 

으로 시도했다. 버튼을 동적으로 표시하는 방법은 어떻습니까?

답변

0

당신은 AutoGeneratingColumn 이벤트를 처리하고 프로그래밍 모든 열의 CellEditTemplate을 설정 할 수 있어야한다 :

<telerik:RadGridView x:Name="grid" AutoGeneratingColumn="grid_AutoGeneratingColumn"> 
    <telerik:RadGridView.Resources> 
     <DataTemplate x:Key="ToggleDataTemplate"> 
      <telerik:RadToggleButton Content="+" Width="20" Height="20" 
            HorizontalContentAlignment="Center" 
            VerticalContentAlignment="Center"/> 
     </DataTemplate> 
    </telerik:RadGridView.Resources> 
</telerik:RadGridView> 

private void grid_AutoGeneratingColumn(object sender, Telerik.Windows.Controls.GridViewAutoGeneratingColumnEventArgs e) 
{ 
    e.Column.CellEditTemplate = grid.Resources["ToggleDataTemplate"] as DataTemplate; 
}