![](/img/trans.png)
[英]Silverlight Textbox_LostFocus event not firing on Button_Click
[英]TextBox in TreeViewItem DataTemplate LostFocus event not firing
我通過在兩個不同的DataTemplate
之間切換來制作一個EditableTextBox
以在TreeViewItem
中使用它。 現在進入編輯模式工作正常,我正在尋找一種退出購買點擊任何地方的方法。
Item 的ViewModel
僅具有一個屬性IsEditable
,用於在此處在兩個DataTemplate
之間切換。
我認為TextBox
LostFocus
將成為 go 的方式,但此事件不會觸發,因此EditableTextBox
保持在編輯模式,除非我 select 另一個TreeViewItem
。
<DataTemplate x:Key="NormalTemplate">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Name}" Margin="3">
<i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewMouseDown" >
<i:InvokeCommandAction Command="{Binding PreviewMouseDownCommand}" CommandParameter="{Binding}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBlock>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="EditTemplate">
<StackPanel>
<TextBox Text="{Binding Path=Name}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="LostFocus" >
<i:InvokeCommandAction Command="{Binding LostFocusCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
</StackPanel>
</DataTemplate>
<HierarchicalDataTemplate DataType="{x:Type ViewModels:DirectoryItem}" ItemsSource="{Binding Items}">
<ContentPresenter Content="{Binding}">
<ContentPresenter.Style>
<Style TargetType="{x:Type ContentPresenter}">
<Setter Property="ContentTemplate" Value="{StaticResource NormalTemplate}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsEditable}" Value="True">
<Setter Property="ContentTemplate" Value="{StaticResource EditTemplate}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ContentPresenter.Style>
</ContentPresenter>
</HierarchicalDataTemplate>
<TreeView
ItemsSource="{Binding ResourceItems}">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
有沒有辦法獲取任何類型的事件來幫助了解在TextBox
外部發生了點擊,從而將IsEditable
屬性更改為 false?
謝謝
“有沒有辦法獲取任何類型的事件,有助於知道在 TextBox 外部發生了點擊,從而將 IsEditable 屬性更改為 false?”
僅關於這句話,您可以輕松使用
System.Windows.Input.MouseButtonEventHandler
也許對你來說有點太多了,但你可以通過 EventArgs 過濾點擊了什么樣的控件等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.