我已经创建了自定义DataGrid
标题,其中包含用于Text的TextBlock
和位于DockPanel
内的Image
。 我绑定TextBlock
的Width
到DataGridTextColumn
的ActualWidth
如下:自定义DataGrid标题中的宽度绑定会产生错误
Width="{Binding ActualWidth, RelativeSource={RelativeSource Mode=TemplatedParent}, Converter={StaticResource FitFilterImageToHeaderConverter}}"
简单的转换器我用的是减去Image
宽度:
public class SubtractConverter : IValueConverter
{
public double Subtractor { get; set; }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
double val = System.Convert.ToDouble(value);
return val - Subtractor;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
一切工作正常,但我得到一个恼人的绑定错误。
System.Windows.Data Error: 5 : Value produced by BindingExpression is not valid for target property.; Value='-11' BindingExpression:Path=ActualWidth; DataItem='ContentPresenter' (Name=''); target element is 'TextBlock' (Name=''); target property is 'Width' (type 'Double')
缺少什么我在这里?
看来你是在返回'返回VAL负值 - Subtractor',这是不是为一个有效的值宽度属性。你应该检查结果是否大于等于0,即'返回Math.Max(0,val - 减法器);' – Clemens