2017-06-18 87 views
0

我製作了一個從類Thumb繼承的定製拇指。縮放Mouse-hover上的自定義UserControl

public class MyThumb : Thumb 
{ 
    //Properties 
    //Constructors 
    ... 
    ... 
} 

我想讓它在用戶的鼠標懸停時放大,然後在懸停被移除時返回到其正常狀態。我已經在App.xaml中編寫了它,以便它可以應用在Canvas區域中的任何拇指上。

<Style x:Key="MyThumb" TargetType="Thumb"> 
      <Style.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter Property="Grid.ZIndex" Value="1"/> 
        <Setter Property="RenderTransform"> 
         <Setter.Value> 
          <ScaleTransform ScaleX="1.1" ScaleY="1.1"/> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 

但這不起作用。拇指不縮放。我究竟做錯了什麼?

回答

1

目前拇指的風格將只適用於具有Style屬性設置這樣的對象:

<Thumb Style="{StaticResource MyThumb}" /> 

<local:MyThumb Style="{StaticResource MyThumb}" /> 

能夠使用自定義的拇指控制,你必須添加(通常是文檔的根元素,但也可以是其他任何),如下所示:

<Window ... 
     xmlns:local="clr-namespace:WpfApp1" /> 

「WpfApp1」必須由您的名稱空間進行重新分配。這裏的控件位於應用程序的主要命名空間中。如果控件位於子名稱空間「WpfApp1.Controls」中,則必須編寫xmlns:local="clr-namespace:WpfApp1.Controls"local可以用你喜歡的任何名稱(在新創建的頁面中,用戶控件......)進行本地referes到創建的元素所在的名稱空間,因此您可能需要將另一個名稱空間聲明添加到上述文件das。另外,上述內容也適用於App.xaml,您可以在其中添加樣式(或者您希望在xaml中使用該控件的任何其他文件)。

x:Key屬性只確定資源字典中包含該樣式的樣式的鍵。

如果你想要的樣式應用到這兩種類型在默認情況下,您可以創建Thumb對象的風格併爲基於前者MyThumb對象樣式(如果你只是想要的樣式應用到所有MyThumb對象,你可以省略前,卸下後風格BasedOn屬性):

<Style TargetType="Thumb"> 
    <!-- Your setters and other stuff --> 
    ... 
</Style> 

<Style TargetType="local:MyThumb" BasedOn="{StaticResource {x:Type Thumb}}"> 
    <!-- Additional setters and other stuff --> 
    ... 
</Style> 

注:在樣式這種情況下,沒有一個是關鍵。

+0

當我使用您提供的代碼片段時,它提供了一個錯誤「Windows Presentation Foundation(WPF)項目中不支持MyThumb」。我應該做些額外的事情來解決這個問題。我應該在哪裏設置樣式屬性。我是新來的WPF,請幫助 –

+0

@RahulKurup我已經更新了我的答案來解決您的問題。風格必須像任何其他屬性一樣設置(例如元素上的「寬度」或「高度」)。 – Streamline