寻找类似于SO如何使用Javascript在浏览器顶部显示警报的WPF控件(如Notification alert similar to how stackoverflow functions所述)
通知上有一堆WPF控件显示在系统托盘上方
http://www.hardcodet.net/projects/wpf-notifyicon
http://nickeandersson.blogs.com/blog/2007/12/a-wpf-desktop-a.html
但是我希望在当前窗口的顶部显示消息,或者使用定时淡出显示用户控件以保持消息本地/相关
我是WPF的新手,所以不确定如何将上面链接的控件定位到当前窗口/ usercontrol的顶部 - 任何提示/指针都很受欢迎
答案 0 :(得分:0)
使用DockPanel作为窗口内的基本面板。将usercontrol设置为DockPanel.Dock = Top。使用另一个面板填充剩余空间。
对于淡出,您可以根据计时器设置整个用户控件的不透明度动画,当不透明度达到0时,将可见性设置为折叠,以便不再占用空间。
答案 1 :(得分: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>