クリックしたセルに応じて、異なるRadContextMenuが表示されたRadGridViewがあります。
ObservableコレクションとしてRadMenuItemsのリストがあります。グリッドが配置されているStackPanel(親コンテナー)に次のコードを設定すると、すべてのアイテムが正しく表示されます。
itemtemplateのスタックパネルに移動すると、機能しません。ViewModelを見つけるための同じコードは、前の項目のボタンコマンドで機能しますが、コンテキストメニューでは機能しません。
ビューのOpeningイベントにアタッチしましたが、ItemsSourceがnullです...。
何かご意見は?
このボタンコマンドは正しく機能します。
<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>