2014-09-21 101 views
1

在我的应用程序中,我有一个ListBox,其ListBoxItems呈现为TextBoxes。我希望项目在TextBox获得键盘焦点时被选中。我应用了以下Trigger它:当文本框失去焦点时,列表框项目被取消选择

<Trigger Property="IsKeyboardFocusWithin" Value="true"> 
    <Setter Property="IsSelected" Value="true" /> 
</Trigger> 

不过,我不想要的是该项目得到取消当TextBox失去焦点,而这也正是我目前得到的。这意味着我无法通过从ComboBox中选择它来更改TextBox内的字体大小。

上述代码在TemplateResourceDictionary文件中定义。

回答

3

你可以使用Storyboard选择您的项目,当它获得焦点,因此只能选择

<ListBox ...> 
     <ListBox.ItemTemplate> 
      <!-- your DataTemplate --> 
     </ListBox.ItemTemplate> 
     <ListBox.ItemContainerStyle> 
      <Style TargetType="{x:Type ListBoxItem}"> 
       <Style.Triggers> 
        <EventTrigger RoutedEvent="GotKeyboardFocus"> 
         <BeginStoryboard> 
          <Storyboard> 
           <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="IsSelected"> 
            <DiscreteBooleanKeyFrame Value="True" KeyTime="0:0:0"/> 
           </BooleanAnimationUsingKeyFrames> 
          </Storyboard> 
         </BeginStoryboard> 
        </EventTrigger> 
       </Style.Triggers> 
      </Style> 
     </ListBox.ItemContainerStyle> 
    </ListBox> 

这样的项目,当它失去重点

+0

锦绣不会自动未选择!这正是我需要的,但对于一个问题。奇怪的是,无论何时我现在在代码的某处设置选择,像这样:'SelectedTextBox = MyTexTBoxes [0];'其中SelectedTextBox是ListBox的'SelectedItem'属性绑定到的属性,它不会被选中。任何想法为什么发生这种情况 – 2014-09-21 11:47:11

+0

@ SG_90,它在你的情况下工作吗? – dkozl 2014-09-21 11:52:14

+0

是的,但我之前评论中描述的问题出现了。我在我的ViewModel中有一个方法,我在ListBox中添加新的元素。新添加的项目应该被选中。现在它不会,除非我实际点击ListBox。但是我想我需要在这里妥协,除非你有一个想法。 – 2014-09-21 11:58:38

相关问题