I have a treeview which works with mvvm binding. And i have contextmenu enabled for them. Now i want to give user the ability to edit the treeviewitem by pressing F2 key or right click edit.
<TreeView x:Name="MyTreeView"><TreeView.Resources><DataTemplate x:Key="NormalTemplate"><StackPanel Orientation="Horizontal"><TextBlock Text="{Binding ID}" Margin="3"/><TextBlock Text="-" Margin="3"/><TextBlock Text="{Binding Name}" Margin="3"/></StackPanel></DataTemplate><DataTemplate x:Key="EditTemplate"><TextBox Text="{Binding Name}"/></DataTemplate></TreeView.Resources><TreeView.ItemTemplate><HierarchicalDataTemplate ItemsSource="{Binding Team}"><ContentPresenter Content="{Binding}"><ContentPresenter.Style><Style TargetType="{x:Type ContentPresenter}"><Setter Property="ContentTemplate" Value="{StaticResource NormalTemplate}"/><Style.Triggers><DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TreeViewItem}}}" Value="True"><Setter Property="ContentTemplate" Value="{StaticResource EditTemplate}" /></DataTrigger></Style.Triggers></Style></ContentPresenter.Style></ContentPresenter></HierarchicalDataTemplate></TreeView.ItemTemplate></TreeView>
I am thinking of below DataTrigger with a boolen property which can enable edit of treeviewitem.
<DataTrigger Binding="{Binding IsInEditMode, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TreeViewItem}}}" Value="True">
bool isInEditMode = false;
public bool IsInEditMode
{
get { return isInEditMode; }
set
{
isInEditMode = value;
PropertyChangedEventHandler handler = PropertyChanged;
if(handler != null)
handler(this, new PropertyChangedEventArgs("IsInEditMode"));
}
}
But i need to set this IsInEditMode only upon user pressing F2 key or selecting contextmenu "edit". Is that possible to enable edit of treeviewitem this way ? And upon pressing enter key after finishing edit i want to call the db and update the name.
Krrishna