2010-02-07 15 views
7

Bir uygulamayı Silverlight'tan wpf'ye yüklemeye çalışıyorum. Unfortunatley Her ikisine de yeniyim. WPF'de aşağıdaki Silverlight koduna bir denklik var mı?WPF Silverlight'a "RootVisual" eşdeğeri

 private static Canvas GetCanvas() 
     { 
      var uc = Application.Current.RootVisual as UserControl; 
      if (uc == null) 
      { 
       return null; 
      } 
      return uc.FindName("ChoiceCanvas") as Canvas; 
     } 

Şu ChoiceCanvas MainWindow şey bir UserControl bulunan ve değil belki, çünkü ben

Application.Current.MainWindow.FindName("ChoiceCanvas") as Canvas; 

kullanıyorum Ama bu çalışmıyor?

cevap

1

FindName, Tuval'in UserControl adkopunda bulunduğu için işe yaramaz, yerine LogicalTreeHelper kullanmayı deneyin.

var canvas = LogicalTreeHelper.FindLogicalNode(
     Application.Current.MainWindow, "ChoiceCanvas") as Canvas; 
10

WPF'de RootVisual özelliği yoktur. Anladığım kadarıyla, "Pencere" "kök" dir. Pencereyi, herhangi bir WPF (D.O.) nesnesinin ait olduğu statik yöntem penceresini çalıştırarak alabilirsiniz. MyWindow = Window.GetWindow (myControl);

1

Geçerli pencere kök görseldir. MSDN WPF Graphics Rendering Overview itibaren

:

kök görsel görsel ağaç hiyerarşisinde en üst öğesidir. Çoğu uygulamada, temel görselin temel sınıfı ya Pencere ya da NavigationWindow'dur. Ancak, bir Win32 uygulamasında görsel nesneler barındırıyor olsaydınız, görsel görsel, Win32 penceresinde barındıran en iyi görsel olur. Daha fazla bilgi için bkz. Öğretici: Win32 Uygulamasında Görsel Nesneleri Barındırma.