2017-06-18 19 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でコントロールを使用するその他のファイル)場合にも、上記は適用されます。

属性は、スタイルを含むリソースディクショナリ内のスタイルのキーのみを定義します。

あなたはスタイルがデフォルトで両方のタイプに適用する場合は、あなただけのスタイルがすべてのMyThumbオブジェクトにあなたを適用したい場合は、Thumbオブジェクトのスタイルと(旧基づいている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

あなたが提供するスニペットを使用すると、 'MyThumbはWindows Presentation Foundation(WPF)プロジェクトでサポートされていません'というエラーが表示されます。私はこれを修正するために余分な何かをしなければならない。どこでスタイルプロパティを設定すべきですか?私はWPFに親切に助けて –

+0

@RahulKurup私はあなたの問題を解決するために私の答えを更新しました。スタイルは他のプロパティと同様に設定する必要があります(たとえば、要素の「幅」または「高さ」)。 – Streamline

関連する問題