c# - 从另一个 DataTemplate 中绑定引用 DataTemplate
问题描述
我正在尝试从我的 DataTemplate 之外的 DataTemplate 绑定命令。
命令InfoButtonCommand
在我的AppSettingsPageViewModel
,我找不到将它绑定到我的按钮的方法。
<DataTmplate DataType="{x:Type wizard:AppSettingsPageViewModel}" x:Name="AppSettingsPageDataTemplate">
<DockPanel>
<Grid>
<dxg:GridControl ItemsSource="{Binding AppSettingsConf, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<dxg:GridColumn FieldName="Key" Header="Key" ReadOnly="True"/>
<dxg:GridColumn FieldName="Value" Header="Value" />
<dxg:GridColumn>
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<!-- The Command Binding -->
<Button Content="ClickMe" Command="{
Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorLevel=2, AncestorType={x:Type DataTemplate}}, Path=InfoButtonCommand}">
</Button>
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
</dxg:GridControl>
</Grid>
</DockPanel>
</DataTemplate>
我尝试通过 DataTemplates 类型绑定
<Button Command="{Binding Path=InfoButtonCommand, RelativeSource={RelativeSource AncestorType={x:Type wizard:AppSettingsPageViewModel}}, Mode=TwoWay}">
直接绑定:
<Button Command="{Binding InfoButtonCommand}">
通过名称:
<Button Command="{Binding ElementName=AppSettingsPageDataTemplate, Path=InfoButtonCommand}">
但上述方法似乎都不起作用。任何帮助将不胜感激
解决方案
在这种情况下,正确的 AncestorType 将是AncestorType={x:Type dxg:GridControl}
该命令可以通过Path=DataContext.InfoButtonCommand
<DataTemplate DataType="{x:Type wizard:AppSettingsPageViewModel}" x:Name="AppSettingsPageDataTemplate">
<DockPanel>
<Grid>
<dxg:GridControl ItemsSource="{Binding AppSettingsConf, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<dxg:GridColumn FieldName="Key" Header="Key" ReadOnly="True"/>
<dxg:GridColumn FieldName="Value" Header="Value" />
<dxg:GridColumn>
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<!-- The Command Binding -->
<Button Content="ClickMe"
Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type dxg:GridControl}}, Path=DataContext.InfoButtonCommand}">
</Button>
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
</dxg:GridControl>
</Grid>
</DockPanel>
</DataTemplate>
推荐阅读
- spring-boot - Quarkus Jandex 索引无法解析神器 org.springframework:spring-web
- apache - href 中父目录的 .htaccess 重定向规则
- c# - 将 GROUP BY / MIN DATE 从 SQL 转换为 LINQ
- javascript - 为什么在字符串列表中查找最长公共前缀时出现运行时错误?
- ansible - 评论的 Ansible 条件
- python - 如何使用 linode 服务器在 Ubuntu 上运行 jupyter notebook?
- php - 使用 PHP fsockopen() 建立 IMAP 连接
- api - 将 curl 请求 API 转换为 axios 请求
- django - Django 尝试导入不存在的类
- c# - 如何在 C# 中构建一个将整数计算为 LIFO 集合的函数