2017-10-29 17 views
0

나는 DataGrid 2 세포를 가지고 있지만 나는 ColorPicker와 다른 셀을 추가 할 :xctk ColorPicker의 데이터 그리드에서 WPF

XAML :

<DataGrid Name="dtg" Grid.Row="2" Grid.Column="0" Grid.RowSpan="3" Width="200" 
       HorizontalAlignment="Left" CanUserAddRows="False" CanUserDeleteRows="False" ScrollViewer.CanContentScroll="True" 
       ScrollViewer.VerticalScrollBarVisibility="Visible" Margin="50,20,0,15" 
       SelectionChanged="rowSelect" AutoGenerateColumns="False" IsReadOnly="false" RowEditEnding="cellc"> 
     <DataGrid.Resources> 
      <Style TargetType="ScrollBar"> 
       <Setter Property="Background" Value="#FFBFBFBF" /> 
      </Style> 
     </DataGrid.Resources> 
     <DataGrid.Columns > 
      <DataGridTextColumn Header="n1" IsReadOnly="false" Binding="{Binding n1}" Width="*"/> 
      <DataGridTextColumn Header="n2" IsReadOnly="false" Binding="{Binding n2}" 
      </DataGridTextColumn> 
     </DataGrid.Columns> 
    </DataGrid> 

클래스를 채우기 위해 세포 :

public class data 
{ 
    public int n1 { get; set; } 
    public int n2 { get; set; } 
} 

답변

1

먼저 Data 클래스에 System.Windows.Media.Color 유형의 속성이 필요합니다.

public Color DataColor { get; set; } 

지금 당신은 당신의보기로 확장 WPF 툴킷 네임 스페이스를 추가해야합니다

xmlns:xctk="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit" 

당신은 DataGridTemplateColumn를 사용하여 사용자 지정 템플릿 데이터 그리드의 열을 정의 할 수 있습니다. ColorPicker과 같은 템플릿을 추가하고 정의 된 속성을 바인딩하면됩니다. 다음은 예입니다.

<DataGrid> 
    <DataGrid.Columns> 
     <!-- ... --> 
     <DataGridTemplateColumn Header="Color"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate x:Key="ColorCellTemplate"> 
        <xctk:ColorPicker SelectedColor="{Binding DataColor, UpdateSourceTrigger=PropertyChanged}" 
         DisplayColorAndName="True" UsingAlphaChannel="False"/> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
     <!-- ... --> 
    </DataGrid.Columns> 
</DataGrid> 
+0

감사합니다! 그리고 또 다른 한가지 : 특정 색상의 셀을 선택하려면 어떻게해야합니까? –

+0

피커의 색상 속성을 데이터 객체에 바인딩하여 색상을 가져옵니다. – Fruchtzwerg

+0

미안하지만 선택한 ColorPicker를 잡기 위해 무엇이 사용되는지 모르겠다. editrowending으로 tryied했지만 색상이 선택되면 이벤트를 던지지 않는다. 색상이 특정 행에서 선택되었을 때를 알고 싶습니다. –