您不能将任何内容绑定到 ConverterParameter 属性,因为它不是依赖属性。
您可以使用带有多个输入值的IMultiValueConverter:
<DataGrid.ItemContainerStyle>
<Style TargetType="DataGridRow">
<Setter Property="BorderBrush" Value="#FF9E9E9E"/>
<Setter Property="BorderThickness">
<Setter.Value>
<MultiBinding Converter="{StaticResource multiConverter}">
<Binding Path="." />
<Binding Path="DataContext.TableItems" RelativeSource="{RelativeSource AncestorType=DataGrid}" />
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
</DataGrid.ItemContainerStyle>
或者您可以将依赖属性添加到转换器并将其绑定到您的 DataGrid 的 ItemsSource 集合:
public class DataGridConverter : DependencyObject, IValueConverter
{
public static readonly DependencyProperty SourceCollectionProperty =
DependencyProperty.Register("SourceCollection", typeof(IEnumerable),
typeof(DataGridConverter), new FrameworkPropertyMetadata(null));
public IEnumerable SourceCollection
{
get { return (IEnumerable)GetValue(SourceCollectionProperty); }
set { SetValue(SourceCollectionProperty, value); }
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
<DataGrid ItemsSource="{Binding TableItems}" Name="TableDataGrid" AutoGenerateColumns="False" BorderThickness="0">
<DataGrid.Resources>
<local:DataGridConverter x:Key="converter" SourceCollection="{Binding Path=DataContext.TableItems, Source={x:Reference TableDataGrid}}" />
</DataGrid.Resources>
<DataGrid.ItemContainerStyle>
<Style TargetType="DataGridRow">
<Setter Property="BorderBrush" Value="#FF9E9E9E"/>
<Setter Property="BorderThickness" Value="{Binding Path=., Converter={StaticResource converter}}"/>
</Style>
</DataGrid.ItemContainerStyle>
</DataGrid>