簡體   English   中英

Silverlight,ItemControl LostFocus和GetFocus無法觸發

[英]Silverlight, itemcontrol LostFocus and GetFocus not firing

好的,情況如下:

我有一個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。

現在...我想做的是,每當我在子項ItemControl(白天)之間單擊時,我希望它們在LostFocus()事件和GotFocus()事件上執行某些功能。

問題是...他們不射擊! 它嘗試從各個角度向他們注冊! 幫忙。

更新我嘗試在MouseLeftButtonDown上執行Focus(),但是發生的是,它直接進入了OnLostFocus,這不是我想要的...我不理解

是Silverlight中的重點概述。 本文提到了要使控件獲得焦點必須滿足的四個條件。 您應該檢查這四個條件以進行控制,我想應該沒問題。

您還應該考慮要在哪個元素上接收這些事件,因為GotFocus和LostFocus是冒泡事件。

我已經通過這樣做來解決了這個問題: this.Focus();this.Focus(); 然后: e.Handled = true;

問題是ItemControl通常無法保持焦點,因此click事件冒泡了。 但是當我告訴他它已處理時,它停止起泡並且不會失去焦點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM