[英]C# WPF Frame->UserControl->Usercontrol Loaded event doesn't fire
我是WPF的新手,有一個我似乎找不到解決方案的問題。
我正在寫一個G19(鍵盤)小程序。 該鍵盤具有一個320x240的顯示屏,您可以使用C#進行訪問。
我為此使用WPF,因為我不再需要做任何GDI繪圖,而是使用常規控件。
所以。 如我所願。 除了一個UserControl,其他所有東西都繪制正確。 我已經下載了此控件-> http://marqueedriproll.codeplex.com/
在設計器中,控件有效,激發了Loaded事件,並且動畫效果良好。 運行應用程序時,我只會看到標簽和文本。 動畫不起作用,並且Loaded事件不再觸發。
任何幫助表示贊賞。
主要功能是我的包裝器。 包裝器已經是一個Usercontrol,並顯示可切換的插件。 該包裝器具有Frame Control(Wrapper1)。 每次切換插件時,都會替換此框架的內容。
public void SetPlugin(IPlugin plugin)
{
if (this.MainPlugin != null)
{
this.MainPlugin.OnHide();
((UserControl)this.MainPlugin).Visibility = System.Windows.Visibility.Hidden;
}
this.MainPlugin = plugin;
((UserControl)this.MainPlugin).Visibility = System.Windows.Visibility.Visible;
this.MainPlugin.OnShow();
this.Wrapper1.Content = this.MainPlugin;
}
我認為這是處理插件系統的正確方法。 插件get被繪制在我的鍵盤上。
我不明白的是,為什么用戶控件只能在設計器視圖中運行而不能在運行的應用程序中運行。
滾動標簽的基本代碼如下:
public MarqueeText()
{
this.Loaded += new RoutedEventHandler(MarqueeText_Loaded);
InitializeComponent();
canMain.Height = this.Height;
canMain.Width = this.Width;
}
void MarqueeText_Loaded(object sender, RoutedEventArgs e)
{
StartMarqueeing(_marqueeType);
}
我看不出它不起作用的原因。 實際上,我一直都找到解決問題的方法,但是這次我什么也沒看到。
提前致謝。 今天確實需要您的幫助。 祝您星期六愉快! :)
我猜您正在渲染到位圖目標,而不是屏幕上。 如果您使用的是RenderTargetBitmap
,則您要承擔幾個責任。 您需要同時設置一個演示源,並確保在調度程序上運行事件。
通常, App.xaml
或Application.Run
會為您執行此操作,但是如果您不使用Window
,那您就自己一個人。
有關詳細信息,請參見此相關問題 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.