2012-05-29 104 views
1

我準備好將我的頭髮撕掉。我有一個相當複雜的自定義Silverlight控件,其中一些是在XAML中定義的,其餘的控件是以編程方式添加的。問題是我的鼠標事件在這一點上都沒有被解僱。升級到Silverlight 5後沒有觸發鼠標事件

XAML:

:創建新的網格行

private FrameworkElement AddRadioButton(string answerIdentifiers) 
    { 
     var oRadioButton = new RadioButton 
           { 
            Content = answerIdentifiers, 
            Background = 
             new SolidColorBrush(ColorNamesExtensions.ColorNames.Transparent.FromName())          
           }; 
     oRadioButton.Click += OQuestionControlClick; 
     oRadioButton.MouseEnter += ORadioButtonMouseEnter; 
     oRadioButton.MouseLeave += ORadioButtonMouseLeave; 
     return oRadioButton; 
    } 

代碼:產生所述單選按鈕

<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="itiStyles.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</UserControl.Resources> 

<Canvas> 
    <Canvas.Resources> 
     <!--L O A D I N G A R E A--> 
     <Storyboard x:Name="LoadingArea_Loading" RepeatBehavior="Forever"> 
      <DoubleAnimation Storyboard.TargetName="spinner" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" To="43200" Duration="00:03:00" /> 
     </Storyboard> 
     <SolidColorBrush Color="Black" Opacity="0.5" x:Key="TransparentBackground"> 
     </SolidColorBrush> 
     <Storyboard x:Name="ShowBigImage"> 
      <DoubleAnimation 
      Storyboard.TargetName="ImageZoom" 
      Storyboard.TargetProperty="Opacity" 
      From="0.0" To="1.0" Duration="00:00:02" /> 
     </Storyboard> 
     <Storyboard x:Name="HideBigImage"> 
      <DoubleAnimation 
      Storyboard.TargetName="ImageZoom" 
      Storyboard.TargetProperty="Opacity" 
      From="1.0" To="0.0" Duration="00:00:01" /> 
     </Storyboard> 
     <Storyboard x:Name="ShowFadedBackground"> 
      <DoubleAnimation 
      Storyboard.TargetName="LoadingAreaBg" 
      Storyboard.TargetProperty="Opacity" 
      From="0.0" To="1.0" Duration="00:00:02" /> 
     </Storyboard> 
     <Storyboard x:Name="HideFadedBackground"> 
      <DoubleAnimation 
      Storyboard.TargetName="LoadingAreaBg" 
      Storyboard.TargetProperty="Opacity" 
      From="1.0" To="0.0" Duration="00:00:01" /> 
     </Storyboard> 
     <Storyboard x:Name="ShowTestFeedback"> 
      <DoubleAnimation 
      Storyboard.TargetName="TestFeedback" 
      Storyboard.TargetProperty="Opacity" 
      From="0.0" To="1.0" Duration="00:00:02" /> 
     </Storyboard> 
     <Storyboard x:Name="HideTestFeedback"> 
      <DoubleAnimation 
      Storyboard.TargetName="TestFeedback" 
      Storyboard.TargetProperty="Opacity" 
      From="1.0" To="0.0" Duration="00:00:01" /> 
     </Storyboard> 
     <Storyboard x:Name="ShowAnswerResponse"> 
      <DoubleAnimation 
      Storyboard.TargetName="AnswerResponse" 
      Storyboard.TargetProperty="Opacity" 
      From="0.0" To="1.0" Duration="0:0:1"/> 
     </Storyboard> 
     <Storyboard x:Name="HideAnswerResponse"> 
      <DoubleAnimation 
      Storyboard.TargetName="AnswerResponse" 
      Storyboard.TargetProperty="Opacity" 
      From="1.0" To="0.0" BeginTime="0:0:1" Duration="0:0:1"/> 
     </Storyboard> 
    </Canvas.Resources> 

    <Grid x:Name="LayoutRoot" Background="White"> 
     <TextBox Height="23" HorizontalAlignment="Left" Margin="40,38,0,0" Name="m_txtNoQuestionPools" VerticalAlignment="Top" Width="120" /> 
     <MediaElement Height="120" HorizontalAlignment="Left" Margin="166,192,0,0" Name="_audio" VerticalAlignment="Top" Width="160" /> 
     <Grid Height="498" HorizontalAlignment="Stretch" Margin="0" Name="m_oQuestionPanel" VerticalAlignment="Stretch" Width="Auto"> 
      <Grid.RowDefinitions> 
       <RowDefinition x:Name="QuestionHeight" Height="Auto" /> 
       <RowDefinition x:Name="AnswerHeight" Height="*" /> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*" /> 
      </Grid.ColumnDefinitions> 
      <Image x:Name="ImageZoom" Width="450" Height="Auto" Grid.Column="0" Grid.RowSpan="2" Visibility="Collapsed" Opacity="0" Canvas.ZIndex="999" /> 
      <StackPanel Height="100" Name="questionPanel" HorizontalAlignment="Stretch" Width="743" Grid.Row="0" Grid.Column="0"> 
       <TextBlock Name="questionTextBlock" /> 
       <Image Name="questionImage" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Stretch="Fill" /> 
      </StackPanel> 
      <StackPanel Height="Auto" HorizontalAlignment="Stretch" Width="743" Grid.Row="1" Grid.Column="0"> 
       <Grid Height="Auto" Name="AnswerContainer" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="743"> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="*" /> 
        </Grid.RowDefinitions> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="*" /> 
        </Grid.ColumnDefinitions> 
        <Canvas Height="Auto" Width="743" Background="{StaticResource TransparentBackground}" x:Name="LoadingAreaBg" Canvas.ZIndex="998" Grid.Row="1" Grid.Column="0" Visibility="Collapsed" >        
        </Canvas> 
        <Canvas Height="61" Width="61" Canvas.Left="8" Canvas.Top="8" x:Name="LoadingArea" Canvas.ZIndex="999" Grid.Row="1" Grid.Column="0" Visibility="Collapsed"> 
         <Path x:Name="Pathb" Width="61.3707" Height="61.3717" Stretch="Fill" StrokeThickness="1.33333" StrokeLineJoin="Round" Stroke="#BD006EBA" Fill="#BD000000" Data="F1 M 303.297,179.655C 303.297,196.234 289.854,209.673 273.271,209.673C 256.7,209.673 243.26,196.234 243.26,179.655C 243.26,163.075 256.7,149.635 273.271,149.635C 289.854,149.635 303.297,163.075 303.297,179.655 Z "/> 
         <Path x:Name="Path_0b" Width="50.0575" Height="50.0615" Stretch="Fill" Fill="#FF446485" Data="F1 M 256.314,179.655C 256.314,170.297 263.923,162.687 273.272,162.687C 282.634,162.687 290.244,170.297 290.244,179.655C 290.244,189.01 282.634,196.621 273.272,196.621C 263.923,196.621 256.314,189.01 256.314,179.655 Z M 248.25,179.655C 248.25,193.456 259.479,204.686 273.272,204.686C 279.962,204.686 286.249,202.081 290.976,197.354C 295.704,192.626 298.307,186.341 298.307,179.655C 298.307,172.968 295.704,166.683 290.976,161.956C 286.249,157.227 279.962,154.624 273.272,154.624C 259.479,154.624 248.25,165.851 248.25,179.655 Z " Canvas.Left="5.5" Canvas.Top="5.498"/> 
         <Path x:Name="spinner" Width="24.9508" Height="25.0417" Stretch="Fill" Data="F1 M 256.314,179.655L 256.314,179.64L 248.25,179.64L 248.25,179.655C 248.25,193.432 259.44,204.643 273.2,204.681L 273.2,196.617C 263.885,196.578 256.314,188.986 256.314,179.655 Z " RenderTransformOrigin="1,0" Canvas.Left="5.472" Canvas.Top="30.507"> 
          <Path.Fill> 
           <LinearGradientBrush StartPoint="0.801298,0.928042" EndPoint="0.159004,0.00604094"> 
            <GradientStop Color="#FF446185" Offset="0"/> 
            <GradientStop Color="#FFFFE400" Offset="0.543967"/> 
            <GradientStop Color="#FFF2DB21" Offset="0.981595"/> 
            <GradientStop Color="#FFF4DD23" Offset="1"/> 
           </LinearGradientBrush> 
          </Path.Fill> 
          <Path.RenderTransform> 
           <TransformGroup> 
            <ScaleTransform ScaleX="1" ScaleY="1"/> 
            <SkewTransform AngleX="0" AngleY="0"/> 
            <RotateTransform Angle="0"/> 
            <TranslateTransform X="0" Y="0"/> 
           </TransformGroup> 
          </Path.RenderTransform> 
         </Path> 
         <Path x:Name="Path_2b" Width="44.9978" Height="45.0008" Stretch="Fill" StrokeThickness="2.66667" StrokeMiterLimit="2" Stroke="#5AFFFFFF" Data="F1 M 294.444,179.655C 294.444,191.344 284.967,200.821 273.272,200.821C 261.588,200.821 252.113,191.344 252.113,179.655C 252.113,167.965 261.588,158.487 273.272,158.487C 284.967,158.487 294.444,167.965 294.444,179.655 Z " Canvas.Left="8.002" Canvas.Top="8"/> 
         <Path x:Name="Path_3b" Width="42.3312" Height="42.3342" Stretch="Fill" Fill="#B3000000" Data="F1 M 294.444,179.655C 294.444,191.344 284.967,200.821 273.272,200.821C 261.588,200.821 252.113,191.344 252.113,179.655C 252.113,167.965 261.588,158.487 273.272,158.487C 284.967,158.487 294.444,167.965 294.444,179.655 Z " Canvas.Left="9.5" Canvas.Top="9.5"/> 
        </Canvas>       
        <sdk:Label Height="50" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" FontSize="20" Canvas.ZIndex="999" Visibility="Collapsed" Opacity="0" Name="AnswerResponse" Foreground="White"/> 
        <sdk:Label Height="50" FontSize="20" HorizontalContentAlignment="Left" VerticalAlignment="Top" Canvas.ZIndex="999" Visibility="Collapsed" Opacity="0" Name="TestFeedback" Foreground="White" /> 
        <ScrollViewer Name="AnswerScrollPanel" VerticalAlignment="Stretch"> 
         <StackPanel Name="answerPanel" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="743" Grid.Row="1" Grid.Column="0"> 
          <Grid Height="Auto" Name="answerGrid" Width="Auto" Margin="20" Background="Transparent" Canvas.ZIndex="998"> 
           <Grid.ColumnDefinitions> 
             <ColumnDefinition MaxWidth="40" MinWidth="40" Width="40" /> 
             <ColumnDefinition MaxWidth="35" MinWidth="35" Width="35" /> 
             <ColumnDefinition MaxWidth="35" MinWidth="35" Width="35" /> 
             <ColumnDefinition MinWidth="100" /> 
             <ColumnDefinition MaxWidth="35" MinWidth="35" Width="35" /> 
             <ColumnDefinition MaxWidth="35" MinWidth="35" Width="35" /> 
             <ColumnDefinition MinWidth="100" /> 
           </Grid.ColumnDefinitions> 
          </Grid> 
          <TextBox Name = "m_answerItem" Width="Auto" Padding="20" Visibility="Collapsed" AcceptsReturn="True" TextWrapping="Wrap" Canvas.ZIndex="2" /> 
          <Grid x:Name="RankOrderControls" Visibility="Collapsed" VerticalAlignment="Stretch" Canvas.ZIndex="1"> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="370" /> 
            <ColumnDefinition Width="*" /> 
           </Grid.ColumnDefinitions> 
           <Grid.RowDefinitions> 
            <RowDefinition x:Name="m_RankOrderRow" Height="*"/> 
           </Grid.RowDefinitions> 

           <controlsToolkit:ListBoxDragDropTarget HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" x:Name="m_rankOrderSource" Grid.Row="0" Grid.Column="0" Background="Transparent" BorderBrush="Transparent"> 
            <ListBox x:Name="m_rankOrderAvailable" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Background="Transparent" BorderBrush="Black" Grid.Column="0" Grid.Row="0"> 
             <ListBox.ItemsPanel> 
              <ItemsPanelTemplate> 
               <StackPanel /> 
              </ItemsPanelTemplate> 
             </ListBox.ItemsPanel> 
            </ListBox> 
           </controlsToolkit:ListBoxDragDropTarget> 
           <Grid Grid.Column="1" Grid.Row="0" VerticalAlignment="Stretch"> 
            <Grid.RowDefinitions> 
             <RowDefinition Height="15" /> 
             <RowDefinition Height="*"/> 
            </Grid.RowDefinitions> 
            <TextBlock Height="15" Text="Drag your choices below to rank" Width="370" TextAlignment="Center" FontWeight="Bold" Grid.Row="0"/> 
            <controlsToolkit:ListBoxDragDropTarget x:Name="m_rankOrderTarget" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" AllowDrop="True" Grid.Row="1" Background="Transparent" BorderBrush="Transparent"> 
             <it:ListBoxGeneric x:Name="mRankOrderUsed" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Background="Transparent" BorderBrush="Transparent"> 
              <it:ListBoxGeneric.ItemsPanel> 
               <ItemsPanelTemplate> 
                <StackPanel /> 
               </ItemsPanelTemplate> 
              </it:ListBoxGeneric.ItemsPanel> 
             </it:ListBoxGeneric> 
            </controlsToolkit:ListBoxDragDropTarget> 
           </Grid> 
          </Grid> 

         </StackPanel> 
        </ScrollViewer> 
       </Grid> 
      </StackPanel> 
     </Grid> 
    </Grid>   
</Canvas> 

代碼即該元素添加到電網3210

代碼:

private void AddToGrid(FrameworkElement element, int columnNumber, int rowNumber) 
    { 
     answerGrid.Children.Add(element); 
     Grid.SetColumn(element, columnNumber); 
     Grid.SetRow(element, rowNumber - 1); 
    } 

我處理的生框架要素的原因是,我可以添加單選按鈕或複選框或擴展FrameworkElement的到電網東西。

此外,此代碼在SL4中運行良好,並且它在SL5中仍然顯示正常,但沒有觸發任何鼠標事件。

我已經嘗試了透明背景,並確保事情有尺寸,我試着搞亂Z順序,我試着搞亂了IsHitTestEnabled並沒有任何東西似乎工作。

任何幫助?

編輯:我也更新了所有的目標版本從4.0到5.0,一切都建立良好的配置。

+0

嘗試通過AddHandler進行訂閱,以便您可以接收處理的事件以及 – notacat

+0

您是否看過http://msdn.microsoft.com/zh-cn/library/hh397894%28v=vs.95%29? – jv42

+0

已知有關鼠標支持(多點擊檢測)的變化,但不應該導致你得到的東西:( – jv42

回答

2

我終於明白得益於獲得Silverlight Spy。在Silverlight 4中,邊界沒有標記爲HitTestVisible,但顯然在Silverlight 5中它們是。這是沒有記錄的任何地方,但邊界正在採取所有的鼠標事件和處理它們。

我在所有的MainPage.xaml邊框上將HitTestVisible設置爲False,現在所有的鼠標事件都按預期工作。

相關問題