2013-07-02 27 views
0

我想在定義DataGrid的寬度時包含VerticalScrollbar的大小。 到目前爲止,我寫了一個轉換器:如何將DataGrid寬度綁定到轉換器?

[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非常陌生。

在此先感謝您的每一個提示。如果您需要更多信息或背景信息,請提出問題。

+2

您可以在Binding中使用StaticResource關鍵字,例如:'Width =「{Binding TheWidth,Converter = {StaticResource VerticalScrollbarConverter}}'' –

+0

是的!這正是我需要的!非常感謝你! – Mathew

+0

沒問題,很高興幫助:) –

回答

1

來自sa_ddam213的評論並未完全解決問題。但它確實把我推向了正確的方向。 要自動傳遞值,我必須執行以下操作: 我在窗口類中創建了一個名爲TotalColumnWidth的屬性。返回此:

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

的XAML如下:

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

利用上述轉換器。

+0

_Root是Window的名字。 – Mathew

相關問題