我面临一个奇怪的问题。我有一个DataGrid
我想绑定ItemsSource
的MultiBinding
原因。虽然使用简单绑定到 aDataTable
效果很好,但我无法让它与多重绑定一起使用。
简单地说:下面的标记工作并呈现数据表
<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
. 此外,调试证明在这两种情况下转换器都返回了正确的值。
你知道这是怎么回事吗?
谢谢!