2013-02-15 1 views
1

MultiValueConverter를 사용하여 textcolum으로 데이터 격자를 만들었습니다. 변환기에는 2 개의 값이 있습니다. 현재 Item의 첫 번째 종속성과 TextBlock의 두 번째 종속성입니다. 표시된 값이 내가 원하는 값입니다.MultiValueConverter를 사용하여 DataGrid의 열 정렬

<TextBox x:Name="phases"></TextBox> 
<DataGrid AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="False" CanUserResizeRows="False" 
     ItemsSource="{Binding MySource}" RowDetailsVisibilityMode="Collapsed" RowHeaderWidth="0" 
      SelectionMode="Single"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Width="Auto" Header="Pos"> 
      <DataGridTextColumn.Binding> 
       <MultiBinding Converter="{StaticResource MyMultiValueConverter}"> 
        <Binding ElementName="phases" Path="Text" /> 
        <Binding /> 
       </MultiBinding> 
      </DataGridTextColumn.Binding> 
     </DataGridTextColumn> 
    </DataGrid.Columns> 
</DataGrid > 

열의 값 표시는 원하는 것입니다. 문제는이 열로 정렬 할 수 없다는 것입니다.

<DataGridTextColumn.SortMemberPath> 
    <MultiBinding Converter="{StaticResource MyMultiValueConverter}"> 
     <Binding ElementName="phases" Path="Text" /> 
     <Binding /> 
    </MultiBinding> 
</DataGridTextColumn.SortMemberPath> 

그러나 나는 얻을 : 나는 그런 식으로 뭔가를 추가하려고 "대상 요소에 대한 FrameworkElement 또는 FrameworkContentElement에 적용 찾을 수 없습니다." 오류.

<DataGridTextColumn.SortMemberPath> 
    <MultiBinding Converter="{StaticResource MyMultiValueConverter}"> 
     <Binding Path="Text" Source="{x:Reference phases}" /> 
     <Binding Path="" /> 
    </MultiBinding> 
</DataGridTextColumn.SortMemberPath> 

그런 다음 첫 번째 줄은 좋아하지만 초 동안, 나는 currentItem를 얻을 수 없다 : 나는로 변경합니다.

나는 SortEvent를 사용하려고 시도하지만, 논리가없는 SortDescription 만 추가 할 수 있습니다 (변환기에 있음).

multiValueConverter를 사용할 때 어떤 방법으로 열을 정렬 할 수 있습니까?

+0

[DataBridColumn SortMemberPath on MultiBinding]의 가능한 복제본 (http://stackoverflow.com/questions/11193203/datagridcolumn-sortmemberpath-on-multibinding) – horns

답변

2

나는이 같은 여기에 같은 질문이라고 생각 :

SortMemberPathDataGridColumn SortMemberPath on MultiBinding은 속성의 이름 (예를 들어, "TotalDollars") 개인이 아니라 계산 된 행 값을 기대하고있다. 머리글처럼 생각하면 전체 열에 대해 한 번 설정합니다. 변환기는 SortMemberPath가 바인딩 경로 문자열을 원할 때 15와 같은 숫자를 반환합니다. 마음에 와서

두 가지 옵션 :

  1. 는 지원 객체 (예를 들어, "AveragePrice")에 계산 된 속성을 제공하고 그 결합. 필요한 변환기 또는 정렬 멤버 경로가 없습니다.

    public double AveragePrice 
    { 
        get { return TotalDollars/NumberToDivideBy; } 
    } 
    
  2. question에서 같은 OnSorting 이벤트 핸들러를 지정한다.

희망이 있습니다. :)