0

SO が Javascript を使用してブラウザーの上部にアラートを表示する方法に似た WPF コントロールを探します (ここで説明されているように、stackoverflow の機能と同様の通知アラート)

システムトレイの上に表示される通知用のWPFコントロールがたくさんあります

http://www.hardcodet.net/projects/wpf-notifyicon

http://nickeandersson.blogs.com/blog/2007/12/a-wpf-desktop-a.html

ただし、メッセージをローカル/関連性を保つために、現在のウィンドウまたはユーザーコントロールの上部に時限フェードアウトでメッセージを表示しようとしています

私はWPFの初心者なので、上記のリンクされたコントロールを現在のウィンドウ/ユーザーコントロールの上部に配置する方法がわかりません-ヒント/ポインターは大歓迎です

4

2 に答える 2

0

ウィンドウ内のベース パネルとして DockPanel を使用します。ユーザー コントロールを DockPanel.Dock=Top に設定します。別のパネルを使用して、残りのスペースを埋めます。

フェードアウトに関しては、タイマーに基づいてユーザーコントロール全体の不透明度をアニメーション化し、不透明度が 0 に達したら、可視性を折りたたんでスペースを占有しないように設定できます。

于 2012-05-23T16:26:33.800 に答える
0

これを試してください。

コードビハインド。

public partial class dtfromdataset : Window
    {
        public dtfromdataset()
        {
            InitializeComponent();


            this.DataContext = this;

            time.Interval = 5000;
            time.Elapsed += new ElapsedEventHandler(time_Elapsed);
            time.Start();
        }
        Timer time = new Timer();



        void time_Elapsed(object sender, ElapsedEventArgs e)
        {
            Dispatcher.BeginInvoke(new Action(() =>
            {
                StatusBarText = "Time is " + DateTime.Now.ToString("ddd-MM-yy HH:mm:ss tt");
            }));
        }

        private DataTable dt = new DataTable();

        public string StatusBarText
        {
            get { return (string)GetValue(StatusBarTextProperty); }
            set { SetValue(StatusBarTextProperty, value); }
        }

        // Using a DependencyProperty as the backing store for StatusBarText.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty StatusBarTextProperty =
            DependencyProperty.Register("StatusBarText", typeof(string), typeof(dtfromdataset), new UIPropertyMetadata(""));

}

Xaml

   <Grid Name="stackPanel1">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="224*" />
        </Grid.RowDefinitions>
        <TextBlock Name="statusText"
                   Grid.Row="0"
                   HorizontalAlignment="Stretch"
                   Background="Silver"
                   FontSize="20"
                   Text="{Binding Path=StatusBarText,
                                  NotifyOnTargetUpdated=True}"
                   TextAlignment="Center">
            <TextBlock.Triggers>
                <EventTrigger RoutedEvent="Binding.TargetUpdated">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity">
                                <EasingDoubleKeyFrame KeyTime="0" Value="0" />
                                <EasingDoubleKeyFrame KeyTime="0:0:0.25" Value="1" />
                                <EasingDoubleKeyFrame KeyTime="0:0:4" Value="1" />
                                <EasingDoubleKeyFrame KeyTime="0:0:5" Value="0" />
                            </DoubleAnimationUsingKeyFrames>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </TextBlock.Triggers>
        </TextBlock>
</Grid>
于 2012-05-23T16:30:45.087 に答える