我需要使用XAML / C#为我的WindowsStoreApp提供帮助。
让我们从我的问题的一个非常简短的解释开始,如果它不够清楚,那么你将在下面找到非常详细的信息:)
简而言之:我在ContentControl
内有一个GridView
。 GridView
将ItemsSource
设置为集合。在我ContentControl
我想使用自制DataTemplateSelector
。在SelectTemplateCore
方法中,我需要访问GridView
的{{1}}项 - 我怎样才能在WinRT中执行此操作?
详细说明:
我想显示用户系统的文件夹,如图片库,连接的USB设备等。不同类型的文件夹应获得不同的图标。我有一些图标作为XAML路径数据,有些作为图像文件。文件夹存储在Collection中。此Collection(名为“Ordner”)存储在Page的Viewmodel中。每个文件夹都有一个属性(基于枚举),用于指定其类型。首先,我使用自定义ItemsSource
来检查文件夹的类型是否可以通过图像或路径显示。它完美地运作。
此处的代码在这里...... 我有一个像这样的页面:
DataTemplateSelector
如果文件夹的图标基于路径,则会调用<common:LayoutAwarePage [...]
xmlns:common="using:De.Mms.DiplomSnma.Win8App.Common">
<common:LayoutAwarePage.Resources>
<common:OrdnerDataTemplateSelector x:Key="ordnerTemplateSelector"
TemplatePathquelle="{StaticResource PathquelleDataTemplate}"
TemplateBildquelle="{StaticResource BildquelleDataTemplate}" />
</common:LayoutAwarePage.Resources>
<GridView ItemsSource="{Binding Ordner}" ItemTemplateSelector="{StaticResource ordnerTemplateSelector}" >
[...]
</GridView>
</common:LayoutAwarePage>
class OrdnerDataTemplateSelector : DataTemplateSelector
{
public DataTemplate TemplateBildquelle { get; set; }
public DataTemplate TemplatePathquelle { get; set; }
protected override DataTemplate SelectTemplateCore
(object item, DependencyObject container)
{
OrdnerViewModel ordner = item as OrdnerViewModel;
if (ordner.OrdnerTyp.Equals(EnumClass.OrdnerTyp.Sharepoint))
{
return TemplateBildquelle;
}
else
{
return TemplatePathquelle;
}
}
}
中名为“PathquelleDataTemplate”的DataTemplate
。在ResourceDictionary
内,除了其他UI元素DataTemplate
之外。在这里,我想使用另一个自定义ContentControl
再次检查文件夹的类型,然后选择一个DataTemplateSelector
,然后包含正确的路径及其数据。但当然我不能在覆盖的DataTemplate
中使用item
。没有任何SelectTemplateCore(item, container)
DataContext
是item
。如何引用我(父母 - 父母)父母null
的{{1}}?我完全没有指定ItemsSource
。我发现的每一个帮助都基于WPF,似乎不适用于WinRT。或者是否有一种完全不同但更适合访问Collection的方法?
这是DataTemplate“PathquelleDataTemplate”(在ResourceDictionary中)。
GridView
这里只是DataTemplateSelector选择的DataTemplate之一:
DataContext
提前感谢您的帮助和抱歉,如果我的英语听起来有时有点奇怪:)
答案 0 :(得分:0)
将Content
设置为传递给DataContext
的{{1}},即
PathquelleDataTemplate
如您所知,<ContentControl ContentTemplateSelector="{StaticResource iconTemplateSelector}" Content="{Binding}"/>
将获得两个项目,null,然后是属性。 null适用于首次应用模板时,第二个适用于解析绑定时。