2013-03-27 58 views
1

我已經在Silverlight中爲Google FrameworkElementFactory搜索了一下,我們沒有這個類,如果沒有,我們有其他的替代方法請幫助我。Silverlight5中的FrameworkElementFactory在哪裏

FrameworkElementFactory spFactory = new FrameworkElementFactory(typeof(Grid)); 
       spFactory.Name = "myComboFactory"; 
       spFactory.SetValue(Grid.WidthProperty, Convert.ToDouble(3)); 
       spFactory.SetValue(Grid.HeightProperty, Convert.ToDouble(3)); 
       spFactory.SetValue(Grid.RenderTransformProperty, new TranslateTransform(-6, -6)); 


       FrameworkElementFactory ec1 = new FrameworkElementFactory(typeof(Ellipse)); 
       ec1.SetValue(Ellipse.FillProperty, Brushes.Red); 
       spFactory.AppendChild(ec1); 

上面的代碼工作正常WPF廣告應用程式,但現在我想要做的Silverlight5 我使用VS 2010是相同的,Silverlight5 我想補充的DataTemplate動態

回答

3

FrameworkElementFactory沒有在Silverlight中存在。如果要在運行時生成DataTemplates,則必須使用XamlReader類。

對於你的情況下,你可能會做這樣的事情:

ListBox listbox = new ListBox(); 
DataTemplate template = System.Windows.Markup.XamlReader.Load(
    @"<DataTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""> 
     <Grid Width=""3"" Height=""3""> 
      <Grid.RenderTransform> 
       <TranslateTransform X=""6"" Y=""6"" /> 
      </Grid.RenderTransform> 
      <Ellipse Fill=""Red"" /> 
     </Grid> 
    </DataTemplate>") as DataTemplate; 

listbox.ItemTemplate = template; 

請注意,您必須在根元素定義默認名稱空間(的xmlns = ...)。


也值得注意的是,您可以/必須使用此方法以編程方式設置ItemsControl的ItemsPanel。

+0

感謝您的回覆,但沒有運氣。 – Gowtham 2013-04-04 13:57:41

+0

它應該工作...是否有例外? – 2013-04-04 15:38:44

+0

@Siler Solver:它沒有拋出異常,但沒有顯示任何元素..發現不同的解決方案,如Directly創建對象的Eclipse類和填充相應的顏色..感謝您的努力和瓦解時間 – Gowtham 2013-04-09 09:17:43