下WPF视图模型 - 视图模型模式,我想数据绑定的高地和电网控制各种定义的宽度,这样我就可以使用GridSplitter后,用户将他们的值存储。 然而,正常的模式似乎并没有为这些特定属性的作用。
注:我张贴这为我张贴作为谷歌失败了我,我要工作了这一点,我自己参考的问题。 我自己的答案可循。
下WPF视图模型 - 视图模型模式,我想数据绑定的高地和电网控制各种定义的宽度,这样我就可以使用GridSplitter后,用户将他们的值存储。 然而,正常的模式似乎并没有为这些特定属性的作用。
注:我张贴这为我张贴作为谷歌失败了我,我要工作了这一点,我自己参考的问题。 我自己的答案可循。
创建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;
}
}
然后,您可以使用您绑定的转换器:
<UserControl.Resources>
<local:GridLengthConverter x:Key="gridLengthConverter" />
</UserControl.Resources>
...
<ColumnDefinition Width="{Binding Path=LeftPanelWidth,
Mode=TwoWay,
Converter={StaticResource gridLengthConverter}}" />
有一些陷阱中,我发现:
正是如此,我用下面的代码:
private GridLength myHorizontalInputRegionSize = new GridLength(0, GridUnitType.Auto)
public GridLength HorizontalInputRegionSize
{
get
{
// If not yet set, get the starting value from the DataModel
if (myHorizontalInputRegionSize.IsAuto)
myHorizontalInputRegionSize = new GridLength(ConnectionTabDefaultUIOptions.HorizontalInputRegionSize, GridUnitType.Pixel);
return myHorizontalInputRegionSize;
}
set
{
myHorizontalInputRegionSize = value;
if (ConnectionTabDefaultUIOptions.HorizontalInputRegionSize != myHorizontalInputRegionSize.Value)
{
// Set the value in the DataModel
ConnectionTabDefaultUIOptions.HorizontalInputRegionSize = value.Value;
}
OnPropertyChanged("HorizontalInputRegionSize");
}
}
而XAML:
<Grid.RowDefinitions>
<RowDefinition Height="*" MinHeight="100" />
<RowDefinition Height="Auto" />
<RowDefinition Height="{Binding Path=HorizontalInputRegionSize,Mode=TwoWay}" MinHeight="50" />
</Grid.RowDefinitions>
另一种可能性,因为你长大之间的转换GridLength
和int
,是创建IValueConverter
并结合使用时,它Width
。 IValueConverter
S还处理双向绑定,因为他们既有ConvertTo()
和ConvertBack()
方法。
最简单的方法是简单地使用字符串设置这些属性,以便将WPF使用GridLengthConverter没有任何额外的工作,自动支持他们。