【问题标题】:FocusedElement of context menu in RadDataBoundListBox is always getting nullRadDataBoundListBox 中上下文菜单的 FocusedElement 始终为空
【发布时间】:2016-02-12 08:41:47
【问题描述】:

我在 mvvmcross WP 应用程序中使用 RadDataBoundListBox。我将 Pivot 用于选项卡,以前我为所有枢轴项目创建了一个视图模型,但现在为所有枢轴项目创建了子视图模型。由于我使用 DataContext 属性进行子视图模型绑定,但 RadContextMenu 出现问题。当上下文菜单的“Opening”事件触发时,FocusedElement 变为空且没有命令工作。

在这一行中,tappedItem 始终为空。

RadDataBoundListBoxItem tappedItem = e.FocusedElement as Telerik.Windows.Controls.RadDataBoundListBoxItem;

这是我的代码:

  • test.xaml 文件:

    <phone:Pivot x:Name="uiPivot" Title="{Binding HeaderTitle}">

        <!-- Tab 1 -->
        <phone:PivotItem x:Name="uiPivotTicketDetails" Header="ticket details" DataContext="{Binding TicketEditVM}">
       <!-- Some Code -->

        </phone:PivotItem>

       <!-- Tab 2-->
        <phone:PivotItem x:Name="uiPivotTimeEntry" DataContext="{Binding TicketTimeEntryVM}" >
            <phone:PivotItem.Header>
                <StackPanel Orientation="Horizontal">

                    <telerik:RadImageButton HorizontalAlignment="Center"  Margin="0, 20, 0, 0" VerticalAlignment="Center" Command="{Binding CmdTimeEntryAdd}" ButtonShape="Ellipse" RestStateImageSource="/Assets/Images/Add-New.png"/>

                    <TextBlock Text="time entries" />                

                </StackPanel>

            </phone:PivotItem.Header>

            <telerik:RadDataBoundListBox x:Name="uiTimeEntryList" ItemsSource="{Binding TicketTimeEntries}" ItemTemplate="{StaticResource TimeEntryItemTemplate}" EmptyContent="There are no time entries to display">

                <telerikPrimitives:RadContextMenu.ContextMenu>
                    <telerikPrimitives:RadContextMenu OpenGesture="Hold" Opening="uiTicketTimeEntryMenu_Opening" >
                        <telerikPrimitives:RadContextMenuItem Content="edit" Tap="onTicketTimeEntryEdit_Tap"  />
                        <telerikPrimitives:RadContextMenuItem Content="delete" Tap="onTicketTimeEntryDelete_Tap" />
                    </telerikPrimitives:RadContextMenu>
                </telerikPrimitives:RadContextMenu.ContextMenu>

            </telerik:RadDataBoundListBox>
        </phone:PivotItem>

这里是 Test.xaml.cs :

public partial class TicketEditHomeView : MvxPhonePage
{
   public TicketEditHomeView()
    {
        InitializeComponent();

        // Set the Context menu...

        RadContextMenu.SetFocusedElementType(this.uiTimeEntryList, typeof(RadDataBoundListBox));
     }


    private void uiTicketTimeEntryMenu_Opening(object sender, Telerik.Windows.Controls.ContextMenuOpeningEventArgs e)
    {
        try
        {
            // This tktTappedItem is getting null
            RadDataBoundListBoxItem tktTappedItem = e.FocusedElement as Telerik.Windows.Controls.RadDataBoundListBoxItem;
            if (tktTappedItem != null)
            {
                ticketTimeEntryDataContext = tktTappedItem.DataContext;
            }


            if (tktTappedItem == null)
            {
                e.Cancel = true;
            }
        }
        catch { }
        finally
        {
            if (tktTappedItem != null)
            {
                tktTappedItem = null;
            }
        }
    }

    private void onTicketTimeEntryEdit_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {
        this.ViewModel.TicketTimeEntryVM.CmdTimeEntrySelected.Execute(ticketTimeEntryDataContext);
    }

    private void onTicketTimeEntryDelete_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {
        this.ViewModel.TicketTimeEntryVM.CmdTimeEntryDeleted.Execute(ticketTimeEntryDataContext);
    }

}

【问题讨论】:

    标签: c# xaml windows-phone-8 telerik mvvmcross


    【解决方案1】:

    -我知道我哪里出错了。在构造函数中设置焦点元素类型时,我使用的是 RadDataBoundListBox 而不是 RadDataBoundListBoxItem。

    这是正确的代码:

     public TicketEditHomeView()
    {
        InitializeComponent();
    
        // Set the Context menu...
    
        RadContextMenu.SetFocusedElementType(this.uiTimeEntryList, typeof(RadDataBoundListBoxItem));
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      • 1970-01-01
      • 2014-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多