【发布时间】:2016-03-25 08:06:28
【问题描述】:
我想在 DataTemplate 元素内绑定一个 gridview-click。我必须使用 HubSections 所必需的 DataTemplate 元素。
如果我在 DataTemplate 元素中绑定此命令,则会收到错误消息:
“对象引用未设置为对象的实例”
<Frame x:Name="frame">
<Hub VerticalAlignment="Center" HorizontalAlignment="Center" >
<HubSection Width="250" x:Name="section1" IsHeaderInteractive="True" >
<DataTemplate>
<GridView IsItemClickEnabled="True" ItemClick="{x:Bind MainPageVM.click}">
<RelativePanel>
<Image x:Name="image" Source="Assets/1.png" Width="Auto" Height="250" />
<TextBlock x:Name="page1" Text="page1" />
</RelativePanel>
</GridView>
</DataTemplate>
</HubSection>
//....
</Hub>
</Frame>
但是,如果我在 DataTemplate 元素之外绑定相同的处理程序(例如 HubSectionHeaderClick),它可以正常工作。
但我不明白为什么?我有什么办法来解决这个问题?
编辑: 这里是带有 ElementName 的 XAML:
<Hub VerticalAlignment="Center" HorizontalAlignment="Center" x:Name="ThisIsHub" >
和绑定:
Binding ElementName=ThisIsHub, Path=DataContext.click
得到错误:
无法解析“对象”类型的数据上下文中的属性“点击”
【问题讨论】:
-
This 问题貌似类似,但是UWP/Win10下不行。
-
我猜dstatemplate的数据上下文不同
-
为集线器控件命名。使用此绑定 {Binding ElementName=''Hubrleelement'',Path="DataContext.clickcommand}.. 假设您的中心元素 dstacontext 指的是 MsinPageVM。让我知道它是否有效
-
不工作,因为没有找到 ElementName,虽然我重命名了它。我认为你是对的 DataTemplate 的 DataContext 是不同的。但为什么?这是默认行为吗?
-
如果我将命令绑定到代码隐藏方法,它可以工作。但不在 ViewModel 中...
标签: c# xaml mvvm win-universal-app