Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // A workaround for:
- // https://stackoverflow.com/questions/70027679/why-does-the-ismouseover-trigger-not-work-for-a-grid-columndefinition
- //---------------------------
- // XAML PART:
- <Grid x:Name="MainGrid">
- <Grid.ColumnDefinitions>
- <ColumnDefinition/>
- <ColumnDefinition/>
- <ColumnDefinition/>
- <ColumnDefinition/>
- </Grid.ColumnDefinitions>
- <Rectangle x:Name="Rect1" Fill="Blue" Grid.Column="0" IsMouseDirectlyOverChanged="Rectangle_IsMouseDirectlyOverChanged"/>
- <Rectangle x:Name="Rect2" Fill="Red" Grid.Column="1" IsMouseDirectlyOverChanged="Rectangle_IsMouseDirectlyOverChanged"/>
- <Rectangle x:Name="Rect3" Fill="Green" Grid.Column="2" IsMouseDirectlyOverChanged="Rectangle_IsMouseDirectlyOverChanged"/>
- <Rectangle x:Name="Rect4" Fill="Yellow" Grid.Column="3" IsMouseDirectlyOverChanged="Rectangle_IsMouseDirectlyOverChanged"/>
- </Grid>
- //---------------------------
- // CODE-BEHIND PART:
- // Widths in star* unit type
- private int _columnWidthWide = 2;
- private int _columnWidthNarrow = 1;
- private void Rectangle_IsMouseDirectlyOverChanged(object sender, DependencyPropertyChangedEventArgs e)
- {
- var rect = sender as Rectangle;
- if ((bool)e.NewValue)
- {
- // On mouse enter
- GridLength columnWidthWide = new(_columnWidthWide, GridUnitType.Star);
- switch (rect.Name)
- {
- case "Rect1":
- MainGrid.ColumnDefinitions[0].Width = columnWidthWide;
- break;
- case "Rect2":
- MainGrid.ColumnDefinitions[1].Width = columnWidthWide;
- break;
- case "Rect3":
- MainGrid.ColumnDefinitions[2].Width = columnWidthWide;
- break;
- case "Rect4":
- MainGrid.ColumnDefinitions[3].Width = columnWidthWide;
- break;
- default:
- break;
- }
- }
- else
- {
- // On mouse leave
- GridLength columnWidthNarrow = new(_columnWidthNarrow, GridUnitType.Star);
- switch (rect.Name)
- {
- case "Rect1":
- MainGrid.ColumnDefinitions[0].Width = columnWidthNarrow;
- break;
- case "Rect2":
- MainGrid.ColumnDefinitions[1].Width = columnWidthNarrow;
- break;
- case "Rect3":
- MainGrid.ColumnDefinitions[2].Width = columnWidthNarrow;
- break;
- case "Rect4":
- MainGrid.ColumnDefinitions[3].Width = columnWidthNarrow;
- break;
- default:
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement