2013-08-02 2 views
0

В настоящее время я работаю над контроллером Telerik Silverlight, RadTreeListView. Можно ли связать событие DoubleClick с этим элементом управления? Обратите внимание, что я использую шаблон MVVM и что RadTreeListView не равен элементу управления RadTreeView. Было бы хорошо, если бы кто-нибудь мог поделиться своим опытом со мной.Telerik RadTreeListView Присоединение к событию

Я перепробовал много способов, но ничего не получалось ..

Последний пример (посмотреть на команду):

<telerik:RadTreeListView x:Name="TreeListControl" 
          AutoGenerateColumns="False" 
          IsReadOnly="True" 
          ItemsSource="{Binding TreeViewData, ValidatesOnDataErrors=True}" 
          IsExpandedBinding="{Binding IsExpanded, Mode=TwoWay}" 
          CanUserFreezeColumns="False" 
          RowIndicatorVisibility="Collapsed" 
          ColumnWidth="*" 
          CanUserSortColumns="False" 
          evt:MouseDoubleClick.Command="{Binding DoubleCommand}" 
          > 

Helper Класс:

.... public static class MouseDoubleClick 
{ 
    public static DependencyProperty CommandProperty = 
     DependencyProperty.RegisterAttached("Command", 
      typeof(ICommand), 
      typeof(MouseDoubleClick), 
      new PropertyMetadata(CommandChanged)); 

    public static DependencyProperty CommandParameterProperty = 
     DependencyProperty.RegisterAttached("CommandParameter", 
      typeof(object), 
      typeof(MouseDoubleClick), 
      new PropertyMetadata(null)); .... 

Компилятор выдает ошибку :

Error 3 The property 'Command' does not exist on the type 'RadTreeListView' in the XML namespace 'clr-namespace:CombinationTreeViewControl'. C:\Users\B95703\Documents\Entwicklung\Silverlight\SilverlightComponents\CombinationTreeViewControl\View\CombinationTreeViewControl.xaml 32 34 CombinationTreeViewControl 

С уважением Patrik

ответ

0

Попробуйте использовать System.Windows.Interactivity Триггера на ваш TreeListView на замковом событии:

<i:Interaction.Triggers><i:EventTrigger EventName="DoubleClick"> 
       <i:InvokeCommandAction Command="{Binding DataContext.TreeViewDoubleClickCommand, ElementName=LayoutRoot}" 
             CommandParameter="{Binding SelectedItem,ElementName=MyTreeView}"/> 
      </i:EventTrigger> 
     </i:Interaction.Triggers> 

Учитывая, что событие DoubleClick подвергаются в управлении TreeListView ,

0

вы можете использовать RowsIsexpandedChange. При расширении изменения вы можете использовать переменную isexpand.

private ICommand _rowIsExpandedChangedClick; 
    public ICommand RowIsExpandedChangedClick 
    { 

     get 
     { 
      if (_rowIsExpandedChangedClick == null) 
      { 
       _rowIsExpandedChangedClick = new MVVM.DelegateCommand<Telerik.Windows.Controls.GridView.RowEventArgs>(RowIsExpandedChangedClickShow); 
      } 

      return _rowIsExpandedChangedClick; 
     } 
     set { _rowIsExpandedChangedClick = value; } 
    } 
    RadTreeListView _currentRadTreeListView; 
    private void RowIsExpandedChangedClickShow(Telerik.Windows.Controls.GridView.RowEventArgs e) 
    { 

     var folder = e.Row.DataContext as YourClass; 
     var row = e.Row as GridViewRow; 
     _currentRadTreeListView = e.OriginalSource as RadTreeListView; 
     if (row.IsExpanded) 
     { 
      folder.Isexpanded = row.IsExpanded; 
     } 



    } 

    //----------------------------------------ExpandHierarchyItem for expand specialitems 
    private void collapseorexpand(FolderSarfasl _currntfolder) 
    { 
     if(_currntfolder.Isexpanded==true) 
      if(_currentRadTreeListView!=null) 
      _currentRadTreeListView.ExpandHierarchyItem(_currntfolder); 
     for (int i = 0; i < _currntfolder.SubFolders.Count; i++) 
     { 
      collapseorexpand(_currntfolder.SubFolders[i]); 
     } 
    } 
Смежные вопросы