【问题标题】:Silverlight, itemcontrol LostFocus and GetFocus not firingSilverlight、itemcontrol LostFocus 和 GetFocus 未触发
【发布时间】:2011-01-30 22:47:39
【问题描述】:

好的,所以情况是这样的:

我有一个 ItemsControl,其中包含多个子项。

孩子实际上是一个 UserControl,这就是 Xaml:

<Grid>
    <Grid.RowDefinitions>
         <RowDefinition Height="Auto" />
         <RowDefinition Height="*" />
    </Grid.RowDefinitions>

    <!--DAY HEADER-->
    <Border x:Name="dayHeader" Height="20" BorderBrush="#B0B6BE" BorderThickness="1" Grid.Row="0" Background="{StaticResource WeekHeader}">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>

            <TextBlock  Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Center"
                         TextWrapping="NoWrap" Margin="1.5,0,0,0" Text="18"/>

             <TextBlock  Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" TextAlignment="Center"
                         TextWrapping="NoWrap" Margin="2,0,0,0" Text="Thuesday" />
            </Grid>
    </Border>

    <!--DAY HOURS-->
    <ItemsControl x:Name="dayHours" Grid.Row="1">
         <ItemsControl.ItemTemplate>
              <DataTemplate>
                   <Border Name="dayHourBorder" Height="30" BorderBrush="#B0B6BE" Width="193" Tag="{Binding Index}" BorderThickness="1,0,1,1" Background="AliceBlue"
                                            MouseLeftButtonDown="dayHourBorder_MouseLeftButtonDown" MouseLeftButtonUp="dayHourBorder_MouseLeftButtonUp"
                                                MouseMove="dayHourBorder_MouseMove" />

              </DataTemplate>
         </ItemsControl.ItemTemplate>
    </ItemsControl>
  </Grid>

简短 这是一个网格,第一行有一个边框 在第二行有一个 ItemsControl。

现在……我想做的是,每当我在子 ItemControls(白天)之间单击时,我希望它们在 LostFocus() 事件和 GotFocus() 事件上执行一些功能。

问题是......他们不开火!它尝试从各个可能的角度向他们注册! 暂停。

更新 我尝试在 MouseLeftButtonDown 上执行 Focus(),但发生的事情是,它直接转到 OnLostFocus,这不是我想要的...... 没看懂

【问题讨论】:

    标签: c# silverlight focus itemscontrol


    【解决方案1】:

    Here 是关于 Silverlight 焦点的概述。文章提到了需要满足四个条件才能使控件获得焦点。您应该检查这四个条件以进行控制,我想应该没问题。

    您还应该考虑您希望在哪个元素上接收这些事件,因为 GotFocus 和 LostFocus 是冒泡事件。

    【讨论】:

    • 嗯,我不明白为什么我不能满足这 4 个条件。我尝试执行 Focus();在 MouseLeftButtonDown 上,但发生的事情是,它直接转到 OnLostFocus。我不明白
    • 我没有任何使用 Silverlight(仅限 WPF)的经验,因此无法为您提供更多帮助。对不起。
    【解决方案2】:

    我已经通过这样做解决了这个问题: 正在做:this.Focus(); 然后:e.Handled = true;

    问题是 ItemControl 通常无法保持焦点,因此单击事件会冒泡。 但是当我告诉他它已处理时,它会停止冒泡并且不会失去焦点。

    【讨论】:

      猜你喜欢
      • 2013-01-03
      • 2017-03-23
      • 1970-01-01
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 2015-12-14
      • 1970-01-01
      相关资源
      最近更新 更多