Showing posts with label remove event. Show all posts
Showing posts with label remove event. Show all posts

Tuesday, April 24, 2012



Prevent Expand\collapse event of treeview and load our functionality, if shift button is pressed.

Add Event "PreviewMouseDown" for the treeview,


pTreeView->PreviewMouseDown += gcnew System::Windows::Input::MouseButtonEventHandler(this, &OnPreviewMouseDown);



void OnPreviewMouseDown( System::Object^ sender, System::Windows::Input::MouseButtonEventArgs^ e)
{

if(System::Windows::Input::Keyboard::IsKeyDown(System::Windows::Input::Key::LeftShift) ||System::Windows::Input::Keyboard::IsKeyDown(System::Windows::Input::Key::RightShift))
{
System::Windows::Controls::TreeView^ pTreeView   = nullptr;
System::Windows::DependencyObject^ pDependencyObject = (System::Windows::DependencyObject^)e->OriginalSource;

pTreeView = (System::Windows::Controls::TreeView^)sender;
FindAncestor(pDependencyObject,System::Windows::Controls::TreeViewItem::typeid);
if(pDependencyObject)
{
System::Windows::Controls::TreeViewItem^ pTreeViewItem = (System::Windows::Controls::TreeViewItem^)pDependencyObject;
int iType = m_pCtrlAdmin->GetTreeitemType( (int)pTreeViewItem->Tag );
if( pTreeViewItem->Items->Count > 0 )
{
SetTreeviewAllItemState(iType);
e->Handled = true;
}

}

}
}



void FindAncestor(System::Windows::DependencyObject^% pDependencyObject,System::Type^ pType)
{
if(pDependencyObject->GetType() == pType)
return;
else
{
pDependencyObject = System::Windows::Media::VisualTreeHelper::GetParent(pDependencyObject);
if(pDependencyObject)
FindAncestor(pDependencyObject,pType);
else
return;
}
}


void SetTreeviewAllItemState(int iType)
{
    //Write your functionality

}