在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}}" />