Metoda Convert z konwertera nie jest nigdy wywoływana, i jest przypisywana domyślna wartość dla Width
Window.xaml
<Metro:MetroWindow.Resources>
<converters:BoolToGridSizeValueConverter x:Key="GridSzConverter"/>
</Metro:MetroWindow.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{Binding IsHamburgerVisible, Converter={StaticResource GridSzConverter}, ConverterParameter=left}"/> <!-- 300 -->
<ColumnDefinition Width="5"/> <!-- splitter -->
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="5"/> <!-- splitter -->
<ColumnDefinition Width="{Binding IsFastConfigVisible, Converter={StaticResource GridSzConverter}, ConverterParameter=right}"/> <!-- auto -->
</Grid.ColumnDefinitions>
Konwerter
public class BoolToGridSizeValueConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var param = parameter as string;
var visible = (bool)value;
if(param == "left")
{
return visible ? "300" : "0";
} else if(param == "right")
{
return visible ? "auto" : "0";
} else
{
throw new InvalidOperationException();
}
}
}
viewmodel:
public class MainWindowViewmodel : ViewModelBase
{
bool isHamburgerVisible;
bool IsHamburgerVisible
{
get
{
return isHamburgerVisible;
}
set
{
isHamburgerVisible = value;
base.OnPropertyChanged("IsHamburgerVisible");
}
}
bool isFastConfigVisible;
bool IsFastConfigVisible
{
get
{
return isFastConfigVisible;
}
set
{
isFastConfigVisible = value;
base.OnPropertyChanged("IsFastConfigVisible");
}
}
}