2

Visibilityが"Collapsed"に設定されたコントロールと、Visibility.CollapsedとVisibility.Hiddenの間の可視性を変更するToggleButtonがあります。MSDNのドキュメントによると 、コントロールの可視性が「折りたたみ」に設定されている場合、レイアウト内のコントロールにスペースが割り当てられることはありませんが、2つの列挙の間に視覚的な違いはありません。さらに、コントロールの表示は最初は折りたたみに設定されているため、コントロールの最初の描画でコントロールにスペースが割り当てられることはありません。

欠落している概念はありますか、または要素が表示されている場合にのみスペースを取るようにするにはどうすればよいですか?私の最終目標は、すべてのコントロール間で一貫したマージンを使用して、表示が変化するコントロールの北に表示されるユーザー選択に基づいた条件でコントロールを表示することです。

XAMLスニペット:

<StackPanel>
    <TextBox Name="hideTest" DataContext="{StaticResource persistentMemoryBridge}"   Text="HIDETEST" Margin="0,327,31,491" Foreground="Black" Background="Orange" Visibility="Collapsed" />
    <TextBox DataContext="{StaticResource persistentMemoryBridge}"   Text="{Binding Path=PropertyTest}" Margin="0,386,31,432" Foreground="Black" Background="Yellow"/>
    <ToggleButton Name="tbVisibility" Content="Toggle" Click="ToggleButton_Click" Margin="0,445,65,391"></ToggleButton>
</StackPanel>

CodeBehind:

private void ToggleButton_Click(object sender, RoutedEventArgs e) {

        switch (hideTest.Visibility) {
            case System.Windows.Visibility.Collapsed: {
                hideTest.Visibility = Visibility.Hidden;
                tbVisibility.Content = "Hidden";
                break;    
            }
        case System.Windows.Visibility.Hidden: {
            hideTest.Visibility = Visibility.Visible;
            tbVisibility.Content = "Visible";    
            break;
            }
        case System.Windows.Visibility.Visible: {
            hideTest.Visibility = Visibility.Collapsed;
            tbVisibility.Content = "Collapsed";
            break;
            }
        }
    }
4

1 に答える 1

2

contolの可視性がCollapsed状態にある場合、そのマージンはレイアウトに参加しません(Hidden状態とは異なります)

簡単に確認できます:

<Window x:Class="MarginsRespectForCollapsedTest.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">
    <StackPanel>
        <Button Margin="50,50" Visibility="Collapsed">I'm Collapsed</Button>
        <Button>I'm Visible!</Button>
    </StackPanel>
</Window>

XAMLは、ツールボックスパネルからコントロールをドラッグしたように見えるというHighCoreに同意します。VSのXAMLデザイナーには、この不快な機能があります。マージンを使用してコントロールを配置しようとします。

于 2013-01-17T22:30:17.697 に答える