我使用来自Telerik的c#.NET 4.5和WPF RadControls。
在我的MainWindow
我有一个RadTabControl
,在我的代码后面我绑定了我的MainViewModel
:
this.DataContext = new MainViewmodel();
ItemSource
的{{1}}绑定在XAML中:
RadTabControl
我还使用 <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
的{{1}}。我在DelegateCommand
中的UserControl中也有相同的Button,这很好。
请问有人可以告诉我如何解决MainViewModel
中RadGridView
的{{1}}问题?
非常感谢 最好的祝福 RR
PS:我有一个简单的项目,但无法附加
答案 0 :(得分:0)
发生这种情况的原因是RadButton上的绑定试图在按钮的DataContext上找到AddTabCommand,而不是父窗口。
要解决这个问题,我建议在Window的资源中设置样式,而不是使用它:
Command="{Binding AddTabCommand}"
给窗口命名,并使用:
Command="{Binding ElementName=windowName, Path=DataContext.AddTabCommand}"
答案 1 :(得分:0)
同意Mike所说的在DataContext(ViewModel)中找不到AddTabCommand。 您可以尝试指定命令的完整路径:
Command =“{Binding ElementName = windowName,Path = NameSapce_Name.ViewModelName.AddTabCommand}”。