绑定到Page's数据上下文
本文关键字:数据 上下文 Page 绑定 | 更新日期: 2023-09-27 18:02:36
我发现需要绑定到Page
的DataContext
,设置如下:
<d:Page.DataContext>
<designTime:PayeesPageDesignViewModel />
</d:Page.DataContext>
在设计时。但是,我需要从具有不同数据上下文的子控件绑定到它:
<GridView x:Name="PayeesGridView"
Margin="0,30,0,0"
IsItemClickEnabled="True"
ItemsSource="{Binding Payees}"
SelectionChanged="PayeesGridView_OnSelectionChanged">
由于ItemsSource
被设置为GridView
,我的GridViewItems
的DataContext
被设置为Payees
集合中的单个Payee
对象。我的ViewModel
有一个属性,我需要从转换器中的View
引用该属性来确定项目的可见性。
我可以根据Payee
对象的属性设置可见性,像这样:
<Border Width="250"
Height="250"
Background="Gray"
Opacity="0.85"
Visibility="{Binding Path=IsOpen,
Converter={StaticResource AccountStatusToVisibilityConverter}}">
但是我真正需要绑定的是Page
的DataContext
的Settings.ShowInactive
属性。有没有办法从子控件中获取上下文?我使用的是WinRT,所以我没有FindAncestor
绑定源的好处。
编辑
根据评论中的建议,我尝试将绑定更改为如下所示:
Visibility="{Binding Path=DataContext.Settings.ShowInactivePayees, ElementName=PageName,
Converter={StaticResource AccountStatusToVisibilityConverter}}">
但是当我在AccountStatusToVisibilityConverter
中设置断点时,转换器永远不会到达。
如何在GridView中分配ItemTemplate ?如果不修改模板的内容,而是修改整个模板会怎么样?像这样的伪xaml…
<Page.Resources>
<DataTemplate x:Key="ActiveTemplate"></DataTemplate>
<DataTemplate x:Key="InactiveTemplate"></DataTemplate>
<local:IsActiveToItemTemplateConverter x:Key="IsActiveToTemplate"
ActiveTemplate="{StaticResource ActiveTemplate}"
InactiveTemplate="{StaticResource InactiveTemplate}"
/>
</Page.Resources>
<GridView
ItemsSoucre="{Binding Payees}"
ItemTemplate="{Binding Settings.ShowInactive, Converter={StaticResource IsActiveToTemplate}}"
IsItemClickEnabled="{Binding Settings.ShowInactive, Converter={StaticResource BooleanNot}}"
/>