9

我很难使用网格拆分器。我已将RowDefinition.Height依赖属性绑定到模型的 clr 属性,如下所示。

    <Grid.RowDefinitions>
        <RowDefinition Height='{绑定路径=Height, Mode=OneWay}' />
        <行定义高度='*' />
    </Grid.RowDefinitions>

这工作正常,直到GridSplitter使用。当使用 手动更改行高时GridSplitter,它将用新的固定大小替换绑定(并删除绑定)。

您是否有任何想法或解决方法如何创建两行可以使用 GridSplitter 调整大小但仍根据 clr 属性/绑定更改它们的高度?

4

1 回答 1

18

我认为问题在于您的源属性Height是 double 类型并且RowDefinition.Height是 类型GridLength。使用转换器,它会双向工作

<Grid.RowDefinitions>
    <RowDefinition Height="{Binding Path=Height,
                                    Mode=TwoWay,
                                    Converter={StaticResource DoubleGridLengthConverter}}"/>
    <!--...-->
</Grid.RowDefinitions>

DoubleGridLength 转换器

public class DoubleGridLengthConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return new GridLength((double)value);
    }
    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        GridLength gridLength = (GridLength)value;
        return gridLength.Value;
    }
}

更新
在这里上传了我的示例应用程序:http ://www.mediafire.com/download.php?pgibb205d65596q

RowDefinition.Height通过在下部输入一个值来设置TextBoxRowDefinition.Height使用GridSplitter

于 2011-03-10T13:10:02.180 回答