0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Visual Studio / WPF > コントロール > Popup > .IsOpen

Last updated at Posted at 2017-04-26
動作環境
Windows 7 Pro (32bit)
Microsoft Visual Studio 2017 Community
Sublime Text 2

@ WPF 4.5入門 by 大田一希さん
No.4903 / 9985

Popupコントロールの例が紹介されている。
試してみた。

ボタンを押したらPopupを表示して、少ししてから消える、というのを試したが失敗した (ポップアップが表示されなかった)。

XAML
<Window x:Class="_170427_t0657_popup.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:_170427_t0657_popup"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <StackPanel>
            <TextBlock Height="50"/>
            <Button Content="Button1" Width="70" Click="Button_Click"/>
            <Popup x:Name="popup1">
                <TextBlock Text="Popup1" Background="Green"/>
            </Popup>
        </StackPanel>
    </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 _170427_t0657_popup
{
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            popup1.IsOpen = true;
            System.Threading.Thread.Sleep(1000);
            // popup1.IsOpen = false;
        }
    }
}

上記にて.IsOpen = falseを入れておくと、.IsOpen = trueでのポップアップの表示自体がされない。

クリックイベントを抜けてから.IsOpenの値を見て描画する、というような仕組みなのかもしれない。

C++ Builderで使っていたApplication.ProcessMessage()相当のものは見つからなかった。(きちんとは調べていないが)。

ボタン押下イベントに時間待ちを入れること自体が良くない実装ではある。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?