在 Telerik RadGridView 中传递 DataContext

本文关键字:DataContext Telerik RadGridView | 更新日期: 2023-09-27 18:34:18

我使用Telerik的c# .NET 4.5和WPF RadControls。

在我的MainWindow我有一个RadTabControl,在我的代码后面,我像这样绑定我的MainViewModel

 this.DataContext = new MainViewmodel();

RadTabControlItemSource绑定在 XAML 中:

 <telerik:RadTabControl ... ItemsSourc={Binding Tabs} .. />

我还使用ContentSelector将不同的内容加载到我的选项卡中。这些内容UserControls .在一个UserControl,我使用了一个RadGRidView,它有自己的ItemsSource,我绑定在代码后面:

TestGridView.ItemsSource = Tasks.GetTasks();

RadGridView Columns绑定到自己的风格:

 <telerik:RadGridView.Columns>
   <telerik:GridViewDataColumn DataMemberBinding="{Binding ID}" Width="*" CellStyle="{StaticResource CellStyle}" />
 </telerik:RadGridView.Columns>
  <Style x:Key="CellStyle" TargetType="{x:Type telerik:GridViewCell}">
        <Setter Property="BorderThickness" Value="0" />
        <Setter Property="BorderBrush" Value="{x:Null}" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate>
                    <Border BorderBrush="#f2f2f2" BorderThickness="0,0,0,2" Padding="0,5,0,5">
                        <StackPanel Orientation="Horizontal">
                            <StackPanel Orientation="Vertical" Margin="10,0,0,0" VerticalAlignment="Top">
                                <TextBlock Text="{Binding Titel}" />
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="{Binding Start}" Foreground="#9fa2ae"/>
                                    <TextBlock Text=" XXX - XXX " />
                                    <TextBlock Text="{Binding Startzeit}" Foreground="#9fa2ae" />
                                    <telerik:RadButton Height="30" Content="Right Button" Command="{Binding AddTabCommand}" CommandParameter="Tab9999"/>
                                </StackPanel>
                            </StackPanel>
                        </StackPanel>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

问题是RadButton不会触发我的MainViewModel DelegateCommand。我在RadGridView的用户控件中也有相同的按钮,这工作正常。

请有人告诉我如何解决RadGridView RadButton的问题?

多谢此致敬意RR

PS:我有一个简单的项目,但无法附加

在 Telerik RadGridView 中传递 DataContext

发生这种情况的原因是 RadButton 上的绑定试图在按钮的 DataContext 上找到 AddTabCommand,而不是父窗口。

要解决此问题,我建议在窗口的资源中设置样式,而不是使用它:

Command="{Binding AddTabCommand}"

为窗口命名,并使用以下名称:

Command="{Binding ElementName=windowName, Path=DataContext.AddTabCommand}"

同意Mike所说的,在你的DataContext(ViewModel)中找不到AddTabCommand。您可以尝试指定命令的整个路径:

命令="{Binding ElementName=windowName, Path=NameSapce_Name.ViewModelName.AddTabCommand}"。