在WPF的View-Model-ViewModel模式下,我试图对网格控件的各种定义的Heights和Widths进行数据绑定(bind),因此我可以存储用户在使用GridSplitter之后将其设置为的值。但是,正常模式似乎不适用于这些特定属性。

注意:我将其作为引用问题发布,因为Google无法使我发布,因此我必须自己解决。我自己的回答如下。

最佳答案

创建一个IValueConverter,如下所示:

public class GridLengthConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        double val = (double)value;
        GridLength gridLength = new GridLength(val);

        return gridLength;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        GridLength val = (GridLength)value;

        return val.Value;
    }
}

然后,您可以在Binding中利用转换器:
<UserControl.Resources>
    <local:GridLengthConverter x:Key="gridLengthConverter" />
</UserControl.Resources>
...
<ColumnDefinition Width="{Binding Path=LeftPanelWidth,
                                  Mode=TwoWay,
                                  Converter={StaticResource gridLengthConverter}}" />

08-17 10:18