我有一个显示不同 RadContextMenu 的 RadGridView,具体取决于单击的单元格。
我有一个 RadMenuItems 列表作为 Observable 集合。当我在 Grid 位于(父容器)中的 StackPanel 上设置以下代码时,它会正确显示所有项目。
当我将它移到项目模板中的堆栈面板中时,它将不起作用。查找 ViewModel 的相同代码适用于前一项中的按钮命令,但不适用于上下文菜单。
我已附加到 View 中的 Opening 事件,并且 ItemsSource 为空......
有什么想法吗?
此按钮命令正常工作:
<telerik:GridViewColumn Header="View" Width="75">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<Button Content="View" FontSize="16" Margin="2" Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ViewTrips:ViewTripsView}}, Path=DataContext.ViewTripCommand}" CommandParameter="{Binding Path=TripID}"></Button>
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
上下文菜单不会被填充:
<telerik:GridViewColumn Name="TripStatus" Header="Status" Width="75" SortMemberPath="TripStatus.Name">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<telerik:RadContextMenu.ContextMenu>
<telerik:RadContextMenu ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ViewTrips:ViewTripsView}}, Path=DataContext.StatusItems}">
</telerik:RadContextMenu>
</telerik:RadContextMenu.ContextMenu>
<TextBlock TextWrapping="Wrap" Text="{Binding Path=TripStatus.Name}"></TextBlock>
<TextBlock TextWrapping="Wrap" Text="{Binding Path=SalesOrder.PaymentStatusText}"></TextBlock>
</StackPanel>
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
StatusItems 的声明
private ObservableCollection<RadMenuItem> _StatusItems;
public ObservableCollection<RadMenuItem> StatusItems
{
get
{
return _StatusItems;
}
set
{
_StatusItems = value;
RaisePropertyChanged("StatusItems");
}
}
以下代码在网格项单元格之外有效:
<StackPanel>
<telerik:RadContextMenu.ContextMenu>
<telerik:RadContextMenu ItemsSource="{Binding Path=StatusItems}">
</telerik:RadContextMenu>
</telerik:RadContextMenu.ContextMenu>
... code for RadGridview....
</StackPanel>