xaml - 如何在 GridView DataTemplate 中绑定视差视图?
问题描述
我正在尝试使用 a在滚动时在视差ParallaxView
内制作图像。预期效果与 PC 上 Xbox UWP 应用中的新闻源相同;当您滚动时,listview 项目上的图像会出现视差。这在下图中直观地显示:GridViewItem
GridView
但是,我遇到了数据绑定数据上下文问题。我看到的所有例子都是为了做整个GridView
或ListView
视差的背景。一个工作示例如下(与此处的 XAML 控件库示例非常相似):
<Grid>
<ParallaxView Name="GridViewParallaxView"
Source="{x:Bind MyGridView}"
VerticalShift="100">
<!-- This is the background image that parallaxes. -->
<Image></Image>
</ParallaxView>
<GridView Name="MyGridView">
<!-- GridView Content Here... -->
</GridView>
</Grid>
我遇到的问题是尝试将ParallaxView
INSIDEDataTemplate
放在ItemTemplate
.GridView
<GridView Name="MyGridView"
ItemsSource="{x:Bind MyDataList}">
<GridView.ItemTemplate>
<DataTemplate x:DataType="models:MyDataType">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<ParallaxView Name="GridViewParallaxView"
Grid.Row="0"
Source="{x:Bind MyGridView}"
VerticalShift="100">
<!-- This is the image ON EACH GRIDVIEW ITEM that parallaxes. -->
<Image Source="{x:Bind MySource}"></Image>
</ParallaxView>
<TextBlock Name="ItemTitleTextBlock"
Grid.Row="1"
Text="{x:Bind Title}"></TextBlock>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
请注意,为简洁起见,省略了某些属性(如MinWidth
和)。Margin
背后的代码(不完全相关,但为某些绑定添加上下文):
public class MyPage : Page
{
public ObservableCollection<MyDataType> MyDataList { get; set; }
}
public class MyDataType
{
public string Title { get; set; }
public ImageSource MySource { get; set; }
}
这不起作用,因为将“ParallaxView”放在“DataTemplate”中会改变“DataContext”。MyGridView
不能再被束缚直接那样。那么如何绑定呢?
另外,我读到该DataContext
属性是由 XAML 树中的子级继承的。我需要Image
数据绑定与DataTemplate
. 有没有办法改变DataContext
for ParallaxView
?
解决方案
您可以使用绑定,而不是 x:Bind。
<ParallaxView Name="GridViewParallaxView"
Grid.Row="0"
Source="{Binding ElementName=MyGridView}"
VerticalShift="100">
<!-- This is the image ON EACH GRIDVIEW ITEM that parallaxes. -->
<Image Source="{x:Bind MySource}"></Image>
</ParallaxView>
推荐阅读
- r - 为什么 GBM cv.fitted 值(使用伯努利分布后)不在 0 和 1 之间?
- terminal - 您可以使用流体合成器在 python 中导出带有 sf2 声音字体文件的 .midi 文件吗?
- python-3.x - 从python中的给定日期获取月份
- java - 使用两个 Yugabyte 实例的多 dc 复制
- office-addins - 对于 Excel 的 M365 订阅 Office 版本 macOS BigSur(版本 11.3.2)未触发 DialogMessageReceived 事件
- reactjs - React Navbar修复滚动300
- powerbi - 当我们在发布时选择敏感度时,防止敏感度横幅显示在通过 IFrame 呈现的 PowerBi 报告上
- c++ - 使用 std::lock 保护 return 语句?
- wordpress - 未触发已取消订单的 Woocommerce webhook
- docker - Docker 和 Cypress - CypressError: `cy.type()` 只能接受字符串或数字。你传入了:`undefined`