2012-06-25 33 views
5

Tôi đang cố sắp xếp cột trên nội dung số. Công cụ chuyển đổi đa liên kết hoạt động tốt. Giải pháp này sẽ đặt SortMemberPath thành nullDataGridColumn SortMemberPath trên MultiBinding

Tôi đã thử nhiều cách khác nhau và đã lướt qua Internet một cách đáng kể.

Mã đã được sửa đổi từ bản gốc vì mục đích bảo mật.

<DataGridTemplateColumn x:Name="avgPriceColumn"> 
<DataGridTemplateColumn.CellTemplate> 
    <DataTemplate> 
     <TextBlock> 
      <TextBlock.Text> 
       <MultiBinding Converter="{StaticResource avgPriceConverter}"> 
        <Binding Path="NumberToDivideBy" /> 
        <Binding Path="TotalDollars" /> 
       </MultiBinding> 
      </TextBlock.Text> 
     </TextBlock> 
    </DataTemplate> 
</DataGridTemplateColumn.CellTemplate> 
<DataGridTemplateColumn.SortMemberPath> 
    <MultiBinding Converter="{StaticResource avgPriceConverter}"> 
     <Binding Path="NumberToDivideBy" /> 
     <Binding Path="TotalDollars" /> 
    </MultiBinding> 
</DataGridTemplateColumn.SortMemberPath> 
</DataGridTemplateColumn> 

EDIT: Tôi tìm thấy một cách để có được dữ liệu ràng buộc để làm việc mà không multibinding, nhưng sắp xếp vẫn không hoạt động. Kể từ khi DataGrid được ràng buộc vào một lớp tùy chỉnh, tôi lấy toàn bộ giá trị và chuyển đổi từ đó, do đó làm giảm sự cần thiết cho MultiBinding.

<DataGridTextColumn x:Name="avgPriceColumn" Binding="{Binding Converter={StaticResource avgPriceConverter}}" SortMemberPath="{Binding Converter={StaticResource avgPriceConverter}}" /> 

Trên cả các tùy chọn này SortMemberPath là thiết lập mặc định để ràng buộc vì vậy tôi không cần phải xác định một cách rõ ràng như tôi có

Tuy nhiên này kết thúc thiết lập giá trị SortMemberPath null xung đột với các ràng buộc áp dụng đối với khách hàng môi trường mã của tôi và không sắp xếp. Vì vậy, tôi vẫn quan tâm đến các giải pháp tốt hơn.

EDIT:

thay đổi mã mâu thuẫn ở những nơi khác để cho phép trùng lặp của SortMemberPath, không hỗ trợ sắp xếp trên một số cột, và đối với một số giá trị loại ra khỏi nước láng giềng cột

Trả lời

6

SortMemberPath dự kiến ​​tên của một tài sản (ví dụ: "TotalDollars") không phải là giá trị hàng được tính riêng lẻ. Hãy nghĩ về nó như tiêu đề, bạn đặt nó một lần cho toàn bộ cột. Trình biến đổi của bạn sẽ trả về một số như 15 trong đó SortMemberPath muốn một chuỗi đường dẫn ràng buộc.

Hai tùy chọn mà tôi suy nghĩ:

  1. Cung cấp một tài sản tính trên đối tượng ủng hộ của bạn (ví dụ "AveragePrice") và ràng buộc đó. Không cần chuyển đổi hoặc sắp xếp đường dẫn thành viên.

    public double AveragePrice 
    { 
        get { return TotalDollars/NumberToDivideBy; } 
    } 
    
  2. Chỉ định một handler OnSorting sự kiện như trong question này.

Hy vọng điều đó sẽ hữu ích. :)

Các vấn đề liên quan