我希望在定义DataGrid的宽度时包含VerticalScrollbar的大小。 到目前为止我写了一个转换器:
[ValueConversion(typeof(double), typeof(double))]
public class VerticalScrollbarConverter : IValueConverter
{
#region IValueConverter Member
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is double)
return (double)value + SystemParameters.VerticalScrollBarWidth;
else
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
我将转换器包含在xaml命名空间中:
xmlns:Core="clr-namespace:Core;assembly=SMS_Core"
我将转换器定义为(窗口)资源:
<Window.Resources>
<Core:VerticalScrollbarConverter x:Key="VerticalScrollbarConverter"/>
</Window.Resources>
由于我的所有DataGrid.Columns都具有固定值,因此我知道需要传递的值。 如何告诉xaml中的GridView Width属性使用转换器?
我知道我的问题非常基本。你可以告诉我,我对WPF很新。
提前感谢每一个提示。如果您需要更多信息或背景信息,请随时提出。
答案 0 :(得分:1)
sa_ddam213的评论并没有完全解决问题。但它肯定会让我走向正确的方向。 要自动传递值,我必须执行以下操作: 我在窗口类中创建了一个名为TotalColumnWidth的属性。回到这个:
myDataGrid.Columns.Sum(c => c.ActualWidth);
xaml如下:
Width="{Binding ElementName=_Root, Path=TotalColumnWidth, Converter={StaticResource ResourceKey=VerticalScrollbarConverter}}"
使用上述转换器。