2016-09-16 82 views
0

我有一个切换按钮,其格式如下。事情是当我点击按钮图像变化很好。只有当我悬停在它上面时,剂量似乎改变了图像。请帮我做错了什么。我也尝试从代码behing MouseEnter,但仍然是剂量工作。触发器属性IsMouseOver不能在ToggleButton上工作

<ToggleButton Grid.Column="0" VerticalAlignment="Top" HorizontalAlignment="Left" Panel.ZIndex="140" Height="41" Width="35" FontSize="9" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"> 
          <ToggleButton.Style> 
           <Style TargetType="{x:Type ToggleButton}"> 
            <Setter Property="Template"> 
             <Setter.Value> 
              <ControlTemplate> 
               <Border BorderThickness="0"> 
                <Image Source="/AltusClient;component/Images/EasyLocate_open.png" Height="41" Width="35"></Image> 
               </Border> 
              </ControlTemplate> 
             </Setter.Value> 
            </Setter> 
            <Style.Triggers> 
             <Trigger Property="ToggleButton.IsMouseOver" Value="True"> 
              <Setter Property="Template"> 
               <Setter.Value> 
                <ControlTemplate> 
                 <Border BorderThickness="0"> 
                  <Image Source="/AltusClient;component/Images/EasyLocate_hover.png" Height="41" Width="35"></Image> 
                 </Border> 
                </ControlTemplate> 
               </Setter.Value> 
              </Setter> 
             </Trigger> 
             <Trigger Property="IsChecked" Value="True"> 
              <Setter Property="Template"> 
               <Setter.Value> 
                <ControlTemplate> 
                 <Border BorderThickness="0"> 
                  <Image Source="/AltusClient;component/Images/EasyLocate_open.png" Height="41" Width="35"></Image> 
                 </Border> 
                </ControlTemplate> 
               </Setter.Value> 
              </Setter> 
             </Trigger> 

             <Trigger Property="IsChecked" Value="False"> 
              <Setter Property="Template"> 
               <Setter.Value> 
                <ControlTemplate> 
                 <Border BorderThickness="0"> 
                  <Image Source="/AltusClient;component/Images/EasyLocate_closed.png" Height="41" Width="35"></Image> 
                 </Border> 
                </ControlTemplate> 
               </Setter.Value> 
              </Setter> 
             </Trigger> 
            </Style.Triggers> 
           </Style> 
          </ToggleButton.Style> 
          <!--<ToggleButton.Template> 
           <ControlTemplate TargetType="{x:Type ToggleButton}"> 
            <ControlTemplate.Triggers> 

             <Trigger Property="IsMouseOver" Value="True"> 
              <Setter Property="Content"> 
               <Setter.Value> 
                <Border BorderThickness="0"> 
                 <Image Source="/AltusClient;component/Images/EasyLocate_hover.png" Height="41" Width="35"></Image> 
                </Border> 
               </Setter.Value> 
              </Setter> 
             </Trigger> 
            </ControlTemplate.Triggers> 
           </ControlTemplate> 
          </ToggleButton.Template>--> 
         </ToggleButton> 

回答

0

IsMouseOver工作得很好,一定是有其他问题与你的Source URI。

而且这也工作得很好:<EventTrigger RoutedEvent="ToggleButton.MouseEnter">

编辑#1

阅读您的意见后,我接过仔细一看,发现这个问题。 IsChecked属性优先,因此覆盖IsMouseOver所做的任何更改。

你必须提供MultiTrigger采取以下4个条件的护理:

1. IsChecked : True, IsMouseOver : True 

2. IsChecked : True, IsMouseOver : False 

3. IsChecked : False, IsMouseOver : True 

4. IsChecked : False, IsMouseOver : False 

EG;

<MultiTrigger> 
    <MultiTrigger.Conditions> 
     <Condition Property="IsChecked" Value="False"/> 
     <Condition Property="IsMouseOver" Value="True"/> 
    </MultiTrigger.Conditions> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate> 
       <Border BorderThickness="0"> 
        <Image Source="C:\Users\Public\Pictures\Sample Pictures\koala.jpg" Height="41" Width="35"></Image> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</MultiTrigger> 

删除您在<Style.Triggers>之外提供的模板。现在一切都将保持在Style.TriggersMultiTrigger之内。

我检查了一切,它工作正常。

+0

没有URL是好的。相同的URL适用于检查和未检查的命令。我也使用了xaml.cs中的鼠标输入事件。当我把一个中断点击中断点。图像不是空的。它包含图像,但从未显示何时悬停。 – nikhil

+0

使用这个完全相同的uri作为独立的图像控件。 – AnjumSKhan

+0

我已经尝试了一切。我想我需要重写我不确定的默认按钮模板。我试图用不同的网址替换源文件。我用背景来玩弄transsparent,{x:Nul}等等,但仍然是一些无用的工作。也尝试过controltemplate.triggers做模板,但仍然没有运气。 我尝试了一些正常按钮的链接。与此问题只是悬停工程,但IsPressed真正或假的剂量工作。 https://social.msdn.microsoft.com/Forums/vstudio/en-US/bfb9d5d0-c526-4c34-b675-84020d2de189/buuton-ismouseover-trigger-not-working?forum=wpf – nikhil