[C#] DataGridTemplateColumn 바인딩하는 방법



Answers

저에게 DataGridTemplateColumn ClipboardContentBinding 은 해결책입니다.

Private Function FindBoundProperty(ByVal col As DataGridColumn) As String

    Dim boundColumn As DataGridBoundColumn = TryCast(col, DataGridBoundColumn)
    Dim boundPropertyName As String = ""
    Dim binding As Binding
    If col.DependencyObjectType.Name = "DataGridTextColumn" Then
        binding = TryCast(boundColumn.Binding, Binding)
        boundPropertyName = binding.Path.Path
    End If
    If col.DependencyObjectType.Name = "DataGridTemplateColumn" Then
        binding = TryCast(col.ClipboardContentBinding, Binding)
        boundPropertyName = binding.Path.Path
    End If
    Return boundPropertyName

End Function
Question

특정 DataGridColumn 과 관련된 속성의 이름을 얻으려고하므로 그 내용을 기반으로 몇 가지 작업을 수행 할 수 있습니다. 이 함수는 사용자가 열 헤더에서 컨텍스트 메뉴 항목을 클릭 할 때 호출됩니다.

DataGridTextColumn 과 같은 미리 준비된 기둥 형 열은 바인딩되어 있기 때문에 괜찮습니다. 그러나 문제는 내 열 중 일부가 바인딩되지 않은 DataGridTemplateColumns 라는 점입니다.

private void GroupByField_Click (object sender, RoutedEventArgs e){
        MenuItem mi = (MenuItem)sender;
        ContextMenu cm = (ContextMenu) mi.Parent;
        DataGridColumnHeader dgch = (DataGridColumnHeader) cm.PlacementTarget;  
        DataGridBoundColumn dgbc = (DataGridBoundColumn) dgch.Column;
        Binding binding = (Binding) dgbc.Binding;
        string BoundPropName = binding.Path.Path;

        //Do stuff based on bound property name here...
    }

그래서, 예를 들어 내 Name 열을 가져 가라. DataGridTemplateColumn (이미지와 다른 것들이 거기에있다.). 따라서 실제로 'Name'속성에 바인딩되지는 않지만 ... 위와 같은 코드가 작동하도록하고 싶습니다.

내 질문은 두 부분으로 나뉜다.

  1. 위 코드가 작동 할 수 있도록 DataGridTemplateColumn 을 바인드 할 수 있습니까? 어떻게 든 재산에 묶을 수 있습니까?

  2. 아니면 완전히 다른 것을 필요로하고 위의 코드를 변경합니까?

미리 감사드립니다!

에서




dgbc.ClipboardContentBinding; 사용할 수 있습니다 dgbc.ClipboardContentBinding;




Links