[英]WPF UserControl.Loaded event does not trigger
在我的程序中,當我將鼠標懸停在(MouseEnter事件)上時,應顯示一個特定的UserControl(在這里使用TransportOrderLineUserControl),一個TransportOrderLineDetailView。
TransportOrderLineDetailView應該放置在屏幕的右下方。 為此,我需要知道一個正確的位置的ActualWidth&ActualHeight。 因為這2個屬性的值必須不同於0,所以我使用DetailView.Loaded事件執行此代碼。
我對其他兩個對象使用完全相同的方式。 在那里工作,但不適用於TransportOrderLineDetailView。
生成視圖的代碼:
TransportOrderLineDetailView tolDetailView = new TransportOrderLineDetailView(new TransportOrderLineDetailViewModel(transportOrderLine));
window.DetailContent = tolView;
tolView.Loaded += SetDetailViewOnUI;
代碼隱藏視圖:
public TransportOrderLineDetailView(TransportOrderLineDetailViewModel detailViewModel)
{
InitializeComponent();
DataContext = detailViewModel;
}
方法SetDetailViewOnUI:
private void SetDetailPanelOnUI(object sender, EventArgs e)
{
Canvas.SetLeft(window.DetailContentPresenter,
window.grid_Root.ActualWidth - window.DetailContentPresenter.ActualWidth);
Canvas.SetTop(window.DetailContentPresenter,
window.grid_Root.ActualHeight - window.DetailContentPresenter.ActualHeight);
}
效果良好的示例:
DriverDetailView driverDetailView = new DriverDetailView(new DriverDetailViewModel(driver));
window.DetailContent = driverDetailView;
driverDetailView.Loaded += SetDetailPanelOnUI;
更多信息
window.DetailContent:
private UserControl detailContent; public UserControl DetailContent { get { return this.detailContent; } set { this.detailContent = value; OnPropertyChanged("DetailContent"); } }
DetailContentPresenter:
<Canvas Grid.RowSpan="2" x:Name="canvas_Popup_DetailView"> <ContentPresenter Content="{Binding DetailContent}" x:Name="detailContentPresenter"/> </Canvas>
不會觸發已加載事件的測試:
public TransportOrderLineDetailView(TransportOrderLineDetailViewModel detailViewModel)
{
InitializeComponent();
DataContext = detailViewModel;
this.Loaded += test; //Test here
}
private void test(object sender, System.Windows.RoutedEventArgs e)
{
// method never executed
}
找到了解決方案。 有一個未引發的錯誤。
我如何找到它的方法是在Visual Studio中調試->異常->勾選可能的異常。
希望這會幫助其他人遇到同樣的問題。 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.