在鼠标悬停上缩放自定义UserControl

时间:2017-06-18 07:00:09

标签: c# wpf

我制作了一个定制的拇指,它继承自Thumb类。

Farms_points_sp <- SpatialPoints(Farm_points, proj4string = proj4string(NZ))
counts <- poly.counts(Farms_points_sp, NZ)

我希望用户在鼠标悬停时进行缩放,然后在删除悬停时返回正常状态。我已经在App.xaml中写了这个,以便它可以应用于Canvas区域中的任何拇指。

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

但这不起作用。拇指没有缩放。我做错了什么?

1 个答案:

答案 0 :(得分:1)

目前,拇指的样式仅适用于具有Style属性设置的对象:

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

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

要使用自定义拇指控件,您必须将包含的命名空间(此处名为local)添加到元素(通常是文档的根元素,但也可以是其他任何元素),如下所示:

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

“WpfApp1”必须由您的命名空间重新定位。这里的控件位于应用程序的主命名空间中。如果控件将存在于子命名空间“WpfApp1.Controls”中,则必须编写xmlns:local="clr-namespace:WpfApp1.Controls"local可以使用您喜欢的任何名称(在新创建的页面,用户控件中......)本地引用创建的元素所在的命名空间,因此您可能需要向文件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>

注意:在这种情况下,没有一个样式有一个键。