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

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

 this.DataContext = new MainViewmodel();


ItemSourceRadTabControl在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不会触发我的DelegateCommandMainViewModel。我在RadGridView中的UserControl中也有相同的Button,效果很好。

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

非常感谢
最好的祝福
RR

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

最佳答案

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

要解决此问题,我建议在Window资源中设置样式,而不要使用以下样式:

Command="{Binding AddTabCommand}"


给窗口命名,并使用它:

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

关于c# - 在Telerik RadGridView中传递DataContext,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27502330/

10-10 13:51