Tôi đang cố gắng đưa ra một cách kín đáo để hiển thị các thông báo lỗi nhỏ cho người dùng. Vì vậy, tôi đã thêm một statusbar mẫu của tôi,WPF Làm mờ văn bản thanh trạng thái sau X giây?
<StatusBar Margin="0,288,0,0" Name="statusBar" Height="23" VerticalAlignment="Bottom">
<TextBlock Name="statusText">Ready.</TextBlock>
</StatusBar>
Và sau đó khi họ nhấp vào nút "Add", nó nên làm một số công cụ, hoặc hiển thị một thông báo lỗi:
private void DownloadButton_Click(object sender, RoutedEventArgs e)
{
addressBar.Focus();
var url = addressBar.Text.Trim();
if (string.IsNullOrEmpty(url))
{
statusText.Text = "Nothing to add.";
return;
}
if (!url.Contains('.'))
{
statusText.Text = "Invalid URL format.";
return;
}
if (!Regex.IsMatch(url, @"^\w://")) url = "http://" + url;
addressBar.Text = "";
Nhưng tin nhắn chỉ ngồi đó trong cuộc đời của ứng dụng ... Tôi nghĩ tôi nên đặt lại sau khoảng 5 giây ... làm cách nào tôi có thể đặt hẹn giờ để làm điều đó?
Phần thưởng: Làm cách nào để tạo hiệu ứng mờ dần khi tôi làm như vậy?
Tôi đã tạo một System.Timers.Timer
,
private Timer _resetStatusTimer = new Timer(5000);
void _resetStatusTimer_Elapsed(object sender, ElapsedEventArgs e)
{
statusText.Text = "Ready";
}
Nhưng sự kiện Elapsed
chạy trên một sợi khác với giao diện người dùng, mà nó không thích ... làm thế nào để tôi nhận được xung quanh đó?
Tôi nên đặt rằng ' '? Bất cứ nơi nào trong XAML? –
mpen
Nó có thể nằm trong bất kỳ từ điển tài nguyên nào trong cửa sổ chứa 'statusBarItem'. Có lẽ không có lý do gì để không đặt nó trong 'Window.Resources'. –
Cảm ơn Robert .. làm cho nó hoạt động ngay bây giờ! Nhưng có cách nào tôi có thể buộc nó vào sự kiện statusText.Changed trực tiếp trong XAML? Sau đó, tôi sẽ không phải gọi bất kỳ phương thức 'Begin()' nào, sẽ không phải tìm tài nguyên trong đoạn mã sau, và tôi sẽ không bao giờ phải lo lắng về việc quên bắt đầu bảng phân cảnh ... – mpen