gpt4 book ai didi

wpf - 具有 sharedsizegroup 的网格列在折叠或不可见时不是 'reclaim' 大小

转载 作者:行者123 更新时间:2023-12-04 19:10:55 27 4
gpt4 key购买 nike

我有以下 xaml:

<Window x:Class="SharedSizeGroupBug.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
</Window.Resources>

<StackPanel Grid.IsSharedSizeScope="True">
<ToggleButton IsChecked="False" Name="TB" Content="Toggle" />

<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="DZG" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>

<TextBlock Text="A1" Width="100" />
<TextBlock Text="A2" Grid.Column="1" />
</Grid>

<Grid Visibility="{Binding IsChecked, ElementName=TB, Converter={StaticResource BooleanToVisibilityConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="DZG" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>

<TextBlock Text="B1" Width="200" />
<TextBlock Text="B2" Grid.Column="1" />
</Grid>
</StackPanel>
</Window>

当您尝试这样做时,第一列的初始状态为 100 宽。当按下按钮并且第二个网格可见时,第一列的宽度为 200。但是,当您再次按下该按钮时,该列的宽度仍将是 200

最佳答案

我遇到了同样的问题,但使用的是行而不是列。我终于用自定义 ivalue 绑定(bind)转换器打败了它,并基本上根据绑定(bind)可见性剥离/恢复共享大小的组。

这是转换器:

class VisibilityToSharedSizeGroupConverter : System.Windows.Data.IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (((System.Windows.Visibility)value) == System.Windows.Visibility.Visible) ? parameter : null;
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return System.Windows.Data.Binding.DoNothing;
}
}

这是一个 XAML 示例:

<Window.Resources>
<local:VisibilityToSharedSizeGroupConverter x:Key="VisToShared" />
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"
SharedSizeGroup="{Binding Converter={StaticResource ResourceKey=VisToShared}, ConverterParameter='LabelsGroup', ElementName=MyLabel1, Path=Visibility}"/>
</RowDefinition>
</Grid.RowDefinitions>
</Grid>

关于wpf - 具有 sharedsizegroup 的网格列在折叠或不可见时不是 'reclaim' 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9977344/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com