无法从RadGridView GridViewDataColumn CellTemplate中绑定到ViewModel



我有一个类型为telerikDocking:RadDocumentPane的视图。此视图上的第一个视觉元素,以及所有其他视觉元素的容器,是一个x:Name="MainGrid"的Grid。

如果我将网格的一个属性绑定到ViewModel上的一个公共属性,也就是它的DataContext,它就会工作并看到它

在这个网格中是一个telerik:RadGridView,它的一列是一个Delete按钮,其可见性属性绑定到GridviewRow的IsSelected属性。这也很好。

我需要能够基于在ViewModel的公共属性中处理的其他条件来覆盖按钮的可见性。为了实现这一点,我将按钮封装在StackPanel中,并试图将其Visibility绑定到ViewModel的公共属性,无论我使用什么RelativeSource语法,我都无法访问VieModel上的该属性。

这是删除按钮的XAML:

<telerik:GridViewDataColumn>
            <telerik:GridViewDataColumn.CellTemplate>
              <DataTemplate>
                <StackPanel Visibility="{Binding ???}">
                  <telerik:RadButton Width="70"
                                     Command="telerik:RadGridViewCommands.Delete"
                                     CommandParameter="{Binding}"
                                     Content="Delete"
                                     IsEnabled="{Binding UserHasCofundingRole}"
                                     Visibility="{Binding IsSelected,
                                                          RelativeSource={RelativeSource AncestorType={x:Type telerik:GridViewRow}},
                                                          Converter={StaticResource booleanToVisibilityConverter}}" />
                </StackPanel>
              </DataTemplate>
            </telerik:GridViewDataColumn.CellTemplate>
          </telerik:GridViewDataColumn>

以下是我为StackPanel的Visibility尝试的所有绑定语法,但没有一次达到ViewModel:

{Binding DataContext.DeleteButtonVisible, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerikDocking:RadDocumentPane}}, Converter={StaticResource booleanToVisibilityConverter}}
                    {Binding ViewModel.DeleteButtonVisible, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerikDocking:RadDocumentPane}}, Converter={StaticResource booleanToVisibilityConverter}}
                    {Binding ElementName=MainGrid, Path=DataContext.DeleteButtonVisible, Converter={StaticResource booleanToVisibilityConverter}}
                    {Binding ElementName=LayoutRoot, Path=ViewModel.DeleteButtonVisible, Converter={StaticResource booleanToVisibilityConverter}}
                    {Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=DataContext.DeleteButtonVisible, Converter={StaticResource booleanToVisibilityConverter}}

尝试这样绑定:

{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path= DataContext.YourPublicProp}

如果您在Window、Page或smt-else中,请将"UserControl"替换为正确的类型。

最新更新