C# 访问页资源元素

C# 访问页资源元素,c#,xaml,windows-8,windows-runtime,winrt-xaml,C#,Xaml,Windows 8,Windows Runtime,Winrt Xaml,如何在C#编码中访问页面资源元素?我的XAML中有以下代码。我想访问C#code中的image元素,但无法访问 它不可访问,因为DataTemplate资源在加载之前不会实例化。您需要执行以下操作才能首先加载它: var dataTemplate = (DataTemplate)this.Resources["Standard250x250ItemTemplate"]; var grid = dataTemplate.LoadContent(); 然后遍历元素树以获得图像 在许多情况下,更好的

如何在C#编码中访问页面资源元素?我的XAML中有以下代码。我想访问C#code中的
image
元素,但无法访问


它不可访问,因为DataTemplate资源在加载之前不会实例化。您需要执行以下操作才能首先加载它:

var dataTemplate = (DataTemplate)this.Resources["Standard250x250ItemTemplate"];
var grid = dataTemplate.LoadContent();
然后遍历元素树以获得图像


在许多情况下,更好的方法是定义一个附加的依赖属性或附加的行为,您可以在XAML中将其附加到您的映像,并编写与关联映像相关的代码。

这取决于您尝试访问它的时间。如果尝试访问已渲染元素的图像控件,则可以使用ItemContainerGenerator,如下所示:

    //assumes using a ListView
    var item = (ListViewItem)listView.ItemContainerGenerator.ContainerFromItem(myModel);

    // traverse children
    var image = GetChildOfType<Image>(item);
    // use the image!

private T GetChildOfType<T>(DependencyObject obj)
{
    for(int i = 0; i< VisualTreeHelper.GetChildrenCount(obj); i++)
    {
        var child = VisualTreeHelper.GetChild(obj, i);
        if(child is T) return child as T;

        T item = GetChildOfType<T>(child);
        if(item != null) return item;
    }
    return null;
}
//假设使用ListView
var item=(ListViewItem)listView.ItemContainerGenerator.ContainerFromItem(myModel);
//遍历儿童
var image=GetChildOfType(项目);
//使用图像!
私有T GetChildOfType(DependencyObject obj)
{
for(int i=0;i
如果您需要更改图像的属性,那么也可以通过绑定来完成