Я использую конвертер, чтобы заполнить оставшееся пространство скрытого столбца в WPF (установите ширину на 0,0), но на самом деле мне нужно соотношение 1.7*
против *
, если оно видно!Как вычислить реальное значение для конвертера?
Конвертер:
public class ColumnWidthConverter : IValueConverter
{
public object Convert(
object value,
Type targetType,
object parameter,
System.Globalization.CultureInfo culture)
{
var isVisible = (bool) value;
var width = parameter as string == "*"
? new GridLength(1, GridUnitType.Star).Value
: double.Parse(parameter as string);
return isVisible ? width : 0.0;
}
public object ConvertBack(
object value,
Type targetType,
object parameter,
System.Globalization.CultureInfo culture)
{
return Binding.DoNothing;
}
}
Как вы можете видеть, я пытался использовать new GridLength(1, GridUnitType.Star).Value
, но это неправильный путь!
XAML (сжато):
<appf:ViewUserControl.Resources>
<local:ColumnWidthConverter x:Key="ColumnWidthConverter" />
</appf:ViewUserControl.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.7*"/>
<ColumnDefinition Width="{Binding Path=Visible, Converter={StaticResource ColumnWidthConverter}, ConverterParameter=*}"/>
</Grid.ColumnDefinitions>
Visible
- это просто логическое свойство в соответствующей ViewModel!