i have 3 columns, while using a specific converter i succeed to change visibility of the middle and right column to visibility collapse or visible.
My problem is that when those columns should be visible, i want them be have a width in stars, when collapse width must be as auto.
Then if their visibility is visible, all my columns are sharing equivalent spaces, otherwise she will take all the space and can be centered into the parent.
I set my visiblity converter
internal class TradeUnitLevelToVisibilityConverter : BaseConverter, IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value != null && (TradeUnit)value == TradeUnit.Unit
? Visibility.Collapsed
: Visibility.Visible;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
}
my width converter
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value != null && (TradeUnit)value == TradeUnit.Unit
? new GridLength(0, GridUnitType.Auto)
: new GridLength(5, GridUnitType.Star);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
}
my xaml :
<Grid Grid.Column="1" Background="{StaticResource Black3C3D41Brush}">
<Grid Grid.Column="1" HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="2.5*"/>
<ColumnDefinition >
<!--<ColumnDefinition.Style>
<Style TargetType="ColumnDefinition">
<Setter Property="Width" Value="*"/>
<Style.Triggers>
<DataTrigger Binding="{Binding , Converter={eshopeur:TradeUnitLevelToVisibilityConverter}}" Value="Unit">
<Setter Property="Width" Value="auto"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ColumnDefinition.Style>-->
</ColumnDefinition>
<ColumnDefinition >
<!--<ColumnDefinition.Style>
<Style TargetType="ColumnDefinition">
<Setter Property="Width" Value="2.5*"/>
<Style.Triggers>
<DataTrigger Binding="{Binding , Converter={eshopeur:TradeUnitLevelToVisibilityConverter}}" Value="Collapsed">
<Setter Property="Width" Value="auto"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ColumnDefinition.Style>-->
</ColumnDefinition>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="1" HorizontalAlignment="Center">
...
</Grid>
<Grid Grid.Column="2" Visibility="{Binding UnitTradeUnitlevel,
Converter={eshopeur:TradeUnitLevelToVisibilityConverter}}"
HorizontalAlignment="Stretch"
Width="{Binding UnitTradeUnitlevel, Converter={auxilaryscreen:UnitTradeUnitToVisibilityConverter}}" >
<Grid>
...
</Grid>
<Grid Grid.Column="3" HorizontalAlignment="Stretch"
Width="{Binding UnitTradeUnitlevel, Converter={auxilaryscreen:UnitTradeUnitToVisibilityConverter}}"
Visibility="{Binding UnitTradeUnitlevel, Converter={eshopeur:TradeUnitLevelToVisibilityConverter}}">
...
</Grid>
</Grid>
</Grid>
i tried with trigger but i don't know how to set them properly as they are checking the visibility converter to adapt the width.
here is what i expect while all visible
when collapse
my actual result is for collapse :
do you have any solution to change at the same time the column visibility and width ?
Visibility.Hidden
instead ofVisibility.Collapsed
?