2011-01-30 2 views
1

좋아 발사하지, 그래서이 같은 상황은 :실버, LostFocus 및 GetFocus 이벤트 itemcontrol

나는 몇몇 아이들을 포함하는 ItemsControl에를 가지고있다.

아이들이 실제로 UserControl이 있습니다, 이것은 XAML의이다 : SHORT IN

<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() 이벤트에서 일부 기능을 실행하기를 원할 때이다.

문제는 ... 발사하지 않습니다! 그리고 가능한 모든 각도에서 그들에게 등록을 시도했습니다! HALP.

UPDATE는 내가 MouseLeftButtonDown에 초점을() 실행 시도되지만, 무슨 일이 있었는지, 그것은 내가 원하는 바가 아니다, 바로 OnLostFocus에 갔다 ... 나는 그것을

답변

0

나는이 작업을 수행하여이 문제를 해결하기 위해 관리했습니다 e.Handled = true;

문제는 ItemControl은 일반적으로 초점을 물을 수 없습니다이었다, 그래서 클릭 이벤트는 버블. 하지만 그에게 Handled라고 말하면 거품이 멈추고 초점을 잃지 않습니다.

0

Here은 이해하지 않는다 Silverlight의 초점 개요. 이 기사에는 통제가 초점을 맞추기 위해 충족시켜야 할 네 가지 조건이 나와 있습니다. 당신은 당신의 통제를위한 그 4 가지 조건을 점검해야하고 그것은 내가 생각하기에 좋을 것입니다.

또한 GotFocus 및 LostFocus가 버블 링 이벤트이므로 해당 이벤트를 수신 할 요소를 고려해야합니다. 다음 this.Focus(); 과 : 일 :

+0

흠, 왜 내가 4 가지 조건을 만족시키지 않을지 모르겠다. Focus()를 실행 해 보았습니다. MouseLeftButtonDown에서 발생했지만, OnLostFocus로 곧바로 이동했습니다. 나는 그것을 이해하지 못한다. – Notter

+0

나는 더 이상 당신을 도울 수 없기 때문에 Silverlight (WPF에만 해당)에 대한 경험이 없다. 죄송합니다. – kubal5003