0

当我定义 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 很陌生。

提前感谢您的每一个提示。如果您需要更多信息或上下文,请尽管询问。

4

1 回答 1

1

sa_ddam213 的评论并没有完全解决问题。但它确实把我推向了正确的方向。要自动传递值,我必须执行以下操作:我在窗口类中创建了一个名为 TotalColumnWidth 的属性。返回这个:

myDataGrid.Columns.Sum(c => c.ActualWidth); 

xml 如下:

Width="{Binding ElementName=_Root, Path=TotalColumnWidth,  Converter={StaticResource ResourceKey=VerticalScrollbarConverter}}"

使用上面提到的转换器。

于 2013-07-05T07:44:19.550 回答