動作環境
Windows 7 Pro (32bit)
Microsoft Visual Studio 2017 Community
Sublime Text 2
ボタンを押したときにTextBoxコントロールの非表示・表示のコード例が紹介されている。
非表示・表示はVisibilityプロパティを設定するようだ。
- System.Windows.Visibility.Collapsed;
- 要素を表示しません。また、その要素の領域もレイアウト内に予約しません。
- System.Windows.Visibility.Hidden;
- 要素を表示しませんが、その要素の領域をレイアウト内に予約します。
- System.Windows.Visibility.Visible;
- 要素を表示します
試してみた。
MainWindow.xaml
<Window x:Class="_170509_t0615_visibility.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:_170509_t0615_visibility"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button x:Name="B_show" Content="Show" HorizontalAlignment="Left" Margin="58,37,0,0" VerticalAlignment="Top" Width="75" Click="B_showClick"/>
<TextBox x:Name="T_hello" HorizontalAlignment="Left" Height="23" Margin="164,47,0,0" TextWrapping="Wrap" Text="Hello" VerticalAlignment="Top" Width="120"/>
<Button x:Name="B_collapse" Content="Collapse" HorizontalAlignment="Left" Margin="58,83,0,0" VerticalAlignment="Top" Width="75" Click="B_collapseClick"/>
<Button x:Name="B_hide" Content="Hide" HorizontalAlignment="Left" Margin="58,130,0,0" VerticalAlignment="Top" Width="75" Click="B_hideClick"/>
</Grid>
</Window>
MainWindow.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace _170509_t0615_visibility
{
/// <summary>
/// MainWindow.xaml の相互作用ロジック
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void B_showClick(object sender, RoutedEventArgs e)
{
T_hello.Visibility = System.Windows.Visibility.Visible;
}
private void B_collapseClick(object sender, RoutedEventArgs e)
{
T_hello.Visibility = System.Windows.Visibility.Collapsed;
}
private void B_hideClick(object sender, RoutedEventArgs e)
{
T_hello.Visibility = System.Windows.Visibility.Hidden;
}
}
}
備考
collapseとhiddenの違いは周りのコントロールの配置と関係するのかもしれない。
今後の使い方で消化予定。
Collapsed / Hidden / Visible という命名は対象性が悪い。