이상한 문제가 있습니다. 이유가있어서 ItemsSource
에 MultiBinding
으로 바인딩하려는 DataGrid
이 있습니다. 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>
... 렌더링은 - 아무에게 CollectionToDataTableConverter
모두 IValueConverter
및 IMultiValueConverter
를 구현하는
<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>
공지 사항을 렌더링하지 단순히 값을 전달합니다.
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