У меня есть сетка данных с текстовым столбцом, использующим MultiValueConverter. Преобразователь получил 2 значения. Первый зависит от текущего элемента, а второй — от TextBlock. Отображаемое значение - это то, что я хочу.
<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?