2014-08-29 76 views
0

我有組合框與MouseEnter和MouseLeave事件。當鼠標進入組合框時,它應該會觸發mouseEnter事件。將其不透明度從40%設置爲100%。 MouseLeave事件是相反的。這裏的問題是,當鼠標進入時,它觸發鼠標進入事件,然後鼠標離開事件,鼠標再次進入事件。 Combobox將被遮蓋到100%的不透明度。我如何才能使這個正確?爲什麼鼠標輸入事件觸發鼠標離開,即使箭頭仍然在元素的頂部?

<ComboBox Name="PageNumberComboBox" Panel.ZIndex="10" Width="70" Grid.Row="1" Grid.Column="0" Height="40" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="0,10,10,0" IsEditable="True" Opacity="0.4" MouseEnter="PageNumberComboBox_MouseEnter" MouseLeave="PageNumberComboBox_MouseLeave"></ComboBox> 

網:

<Grid Panel.ZIndex="0" Grid.Row="1" Grid.ColumnSpan="2" > 

代碼:

private void PageNumberComboBox_MouseEnter(object sender, MouseEventArgs e) 
    { 
     PageNumberComboBox.Opacity = 100.0; 
     MessageBox.Show("mouse enter"); 
    } 

    private void PageNumberComboBox_MouseLeave(object sender, MouseEventArgs e) 
    { 
     PageNumberComboBox.Opacity = 40.0; 
     MessageBox.Show("mouse leave"); 
    } 

回答

0
<ComboBox> 
     <ComboBox.Style> 
      <Style TargetType="ComboBox"> 
       <Setter Property="Opacity" Value="0.4"/> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsMouseOver}" Value="True"> 
         <Setter Property="Opacity" Value="1"/> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </ComboBox.Style> 
    </ComboBox> 
+0

哇奏效非常感謝!雖然Firinge事件會是更好的選擇。 – 2014-08-29 08:08:24