返回首页

我的同胞WPF弟子
昨天我思考解决的XAML文件路径。
,不似乎是一个简单的方法来找到一个XAML文件的URI。内部,产生g.cs使用的路径,以下摘录所示:

public void InitializeComponent() 



{ 

  if (_contentLoaded) 

  { 

    return; 

  } 

  _contentLoaded = true; 

  System.Uri resourceLocater = new System.Uri("/PageCollection;component/pages/page1.xaml", System.UriKind.Relative); 

  #line 1 "..\..\..\Pages\Page1.xaml" 

  System.Windows.Application.LoadComponent(this, resourceLocater); 

  #line default 

  #line hidden 

}


但是,怎样才能得到我们的双手就可以了吗?我所做的是将其纳入{A2}生成的XAML资源包的URI。
要证明我已经创建了一个虚拟的UserControl在示例应用程序中的一个子文件夹。
{S0}
图图:假的UserControl生成一包的URI

T4模板的输出结果,使我们能够确定在一个安全的方式到XAML文件的路径。下面的摘选显示生成的包URI:{C}
现在我们有了这个,我们可以这样写:
Uri uri = new Uri(CSharpDesktopClrDemo.XamlMetadata.Folder1.Folder2.Metadata

                 .UserControl1XamlMetadata.XamlPackUri, UriKind.Relative);

var control = System.Windows.Application.LoadComponent(uri) 

       as DanielVaughan.MetaGen.Demo.Folder1.Folder2.UserControl1;


更神奇的字符串组的URI!
下载的模板和示例应用程序:{A3}

回答

评论会员:吕克Pattyn 时间:2012/01/25
您好,

没有你并不需要拆除的元素,您要删除从集合

顺便说一句:你应该考虑使用通用。 。集合(如Dictionarylt; T1,T2gt),因为NET 2.0中,他们是更快,更安全

{S1}

评论会员:罗布格雷厄姆 时间:2012/01/25
Hashtable中只包含一个参考对象,而不是对象本身。删除一个Hashtable的参考从其他hastable(H1 H0)只需要参考H0,H1。 H0本身不变(所有引用包含在H0)
评论会员:。AspDotNetDev 时间:2012/01/25

我假设你的问题是关于垃圾收集的。如果是这样,只是删除H0。这里的原因... ...
从H0 H1删除,你告诉垃圾收集器quot;嘿,H0不再引用任何东西,这样你就可以进行垃圾收集itquot。一旦H0垃圾收集,这意味着boxednbsp;整数(10) ,也没有引用,使其成为一个垃圾收集候选人以及。
垃圾收集,可以概括如下:如果一个对象不再被引用另一个对象,它会被垃圾收集(又名,从内存中释放)。如果有一些循环引用的排序(如variablenbsp;然后引用的变量引用变量B),那么这些对象将仍然是垃圾收集这么长时间,因为它们不是主线程可以访问的任何引用。 |