C# Silverlight、itemcontrol LostFocus和GetFocus未触发

C# Silverlight、itemcontrol LostFocus和GetFocus未触发,c#,silverlight,focus,itemscontrol,C#,Silverlight,Focus,Itemscontrol,好的,所以情况是这样的: 我有一个ItemsControl,它包含几个子项 孩子们实际上是一个用户控件,这是它的Xaml: <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <!--DAY HEA

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

我有一个ItemsControl,它包含几个子项

孩子们实际上是一个用户控件,这是它的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(day hours)之间单击时,我希望它们在LostFocus()事件和GotFocus()事件上执行一些函数

问题是。。。他们不开火!它试图从每个可能的角度向他们注册! 哈尔普

更新 我尝试在MouseLeftButtonDown上执行Focus(),但结果是,它直接转到了OnLostFocus,这不是我想要的。。。 我不明白它是关于Silverlight中焦点的概述。本文提到了控件获得焦点需要满足的四个条件。你应该检查这四个条件来控制,我想应该没问题


你还应该考虑你想接收哪些事件作为焦点,而LostFocus是冒泡事件。

< P>我通过这样做设法解决了这个问题: 正在执行:
this.Focus()
然后:
e.Handled=true

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

Hmm,我不明白为什么我不能满足这4个条件。我试着执行Focus();在MouseLeftButtonDown上,但发生的是,它直接转到了OnLostFocus。我不明白,我没有任何Silverlight(仅WPF)的经验,因此我无法进一步帮助您。很抱歉