У меня возникла странная проблема. У меня есть DataGrid
, который я хочу связать с ItemsSource
с MultiBinding
. При использовании простой привязки к DataTable
хорошо работает, я не могу заставить это работать с многосвязным.Невозможно связать DataGrid ItemsSource с многосвязным - простое связывание прекрасно работает
Проще говоря: разметку ниже работ и предоставляет данные таблицы
<DataGrid Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" AutoGenerateColumns="True" IsReadOnly="True">
<DataGrid.ItemsSource>
<Binding Path="Mock.Value" Converter="{StaticResource CollectionToDataTableConverter}"></Binding>
</DataGrid.ItemsSource>
</DataGrid>
... в то время как это на самом деле не работает - не оказывает никакого отношения
<DataGrid Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" AutoGenerateColumns="True" IsReadOnly="True">
<DataGrid.ItemsSource>
<MultiBinding Converter="{StaticResource CollectionToDataTableConverter}">
<Binding Path="Mock.Value" />
</MultiBinding>
</DataGrid.ItemsSource>
</DataGrid>
Обратите внимание, что CollectionToDataTableConverter
реализует как IValueConverter
и IMultiValueConverter
и просто передает значение
public class CollectionToDataTableConverter : IMultiValueConverter, IValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
return values?.FirstOrDefault();
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value;
}
// ...
}
На данный момент существует модель Mock.Value
и модель DataTable
. Кроме того, отладка доказывает, что в обоих случаях конвертер возвращает правильное значение.
У вас есть идеи, что с этим связано?
Спасибо!
Благодарим вас за ответ. Наилучшим образом, самый легкий для меня - вернуть '.DefaultView' в этом случае. И это, по-видимому, делает работу с несколькими связями правильной. Спасибо, очень хорошо поймать! – patryk