How to Sort a DataGridTextColumn which uses a MultiBinding Converter

data-binding, datagrid, sorting, wpf

Solution

I figured it out, thanks to this article. In the end it is quite simple;

<DataGridTextColumn x:Name="Column1"
                    SortMemberPath="SomeDataModelProperty">

i.e. don't use a binding, just specify the property name directly.

Problem

I use a multibinding with a value converter to provide the visual display of a collection of items in my `DataContext`. Here is a snippet of the XAML; ``` <DataGrid.Columns> <DataGridTextColumn x:Name="Column1" SortMemberPath="{Binding Path=SomeDataModelProperty}"> <DataGridTextColumn.Binding> <MultiBinding Converter="{StaticResource MyCustomConverter}"> <Binding Path="SomeDataModelProperty" /> <Binding RelativeSource="{RelativeSource Self}" Path="ActualWidth" /> <!-- Other bindings --> </MultiBinding> </DataGridTextColumn.Binding> </DataGridTextColumn> ``` The binding on the `SortMemberPath` is such that I can sort by the property in my `DataContext`. However, I get an error on the output window ``` Cannot find governing FrameworkElement or FrameworkContentElement for target element. ``` Googling this issue yields a result using DXGrid by DevExpress, but not one using the standard WPF data grid. Does anyone know the correct way to provide the sorting to the data grid column?

Original source