2013-02-07 1 views
0

모든 WPF DataGrid 열에 버튼을 추가하고 싶습니다. 내 열은 자동으로 생성되므로 xaml에있는 열의 정의는 없습니다. 어떻게 열의 템플릿을 사용하여이 작업을 수행 할 수 있습니까? 그래서 열 머리글이 있고 오른쪽에 단추가 있습니다.모든 WPF DataGrid 열의 버튼

편집 : User.myDataTable는 모델에 가득하고 잘 작동

<DataGrid ItemsSource="{Binding User.myDataTable}" AutoGenerateColumns="True"> 
     <DataGrid.ColumnHeaderStyle> 
      <Style TargetType="DataGridColumnHeader"> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate> 
          <StackPanel Orientation="Horizontal"> 
           <TextBlock Text="Here I want my ColumnName" /> 
           <Button Content="Button"/> 
          </StackPanel> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
     </DataGrid.ColumnHeaderStyle> 
    </DataGrid> 

.

답변

0

할 수 있습니다 스타일을 사용하여이이 : 잘 작동

<DataGrid> 
    <DataGrid.ColumnHeaderStyle> 
     <Style TargetType="DataGridColumnHeader"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate> 
         <StackPanel Orientation="Horizontal"> 
          <TextBlock Text="{Binding ColumnName}" /> 
          <Button Content="Button" /> 
         </StackPanel> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </DataGrid.ColumnHeaderStyle> 
<DataGrid> 
+0

확인을하지만, 어떻게 내 럼 이름에 바인딩 내가 할 수 있습니까? 그들은 자동으로 생성되고 내 DataGrid의 소스는 내 모델의 데이터 테이블에 바인드됩니다. – user2025830

+0

코드를 공유 할 수 있습니까? 그것은 매우 도움이 될 것입니다. – TrueEddie

+0

게시물을 편집했습니다. – user2025830

0
use the below code:- 

    DataGridTemplateColumn templateColumn = new DataGridTemplateColumn(); 

    FrameworkElementFactory HeaderStackpanel = new FrameworkElementFactory(typeof(StackPanel)); 
    FrameworkElementFactory btn = new FrameworkElementFactory(typeof(Button)); 
    // Set the property for Button 

    btn.SetValue(Button.MarginProperty, new Thickness(-50, 0, 0, 0)); 
    btn.AddHandler(Button.ClickEvent, new RoutedEventHandler(BtnClick)); 
    // Set the Text Value to the buttons 

    btn.SetValue(Button.ContentProperty, strEdit); 

    // Append the Edit Button 

    HeaderStackpanel.AppendChild(btn); 
    DataTemplate headerTemplate = new DataTemplate(); 
    headerTemplate.VisualTree = HeaderStackpanel; 

    templateColumn.HeaderTemplate = headerTemplate;      
관련 문제