wpf给模板控件添加事件一

假如我们自定义了一个控件模板,里面有一个Slider控件,如何给它添加事件呢?

 <Style TargetType="{x:Type s:ZoomBox}">

        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type s:ZoomBox}">
                    <Border CornerRadius="1"
                            BorderThickness="0"
                            Background="#EEE"
                            BorderBrush="DimGray">
                        <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="*" />
                                    </Grid.ColumnDefinitions>
                                    <Slider Name="PART_ZoomSlider"
                                            VerticalAlignment="Center"
                                            HorizontalAlignment="Center"
                                            Margin="0"
                                            Ticks="25,50,75,100,125,150,175,200,225,250"
                                            Minimum="25"
                                            Maximum="250"
                                            SmallChange="25"
                                            LargeChange="25"
                                            Value="100"
                                            MinWidth="104"
                                            MinHeight="21"
                                            IsSnapToTickEnabled="True"
                                            IsMoveToPointEnabled="False" />

                                    <TextBlock Text="{Binding ElementName=PART_ZoomSlider, Path=Value}"
                                               Grid.Column="1"
                                               VerticalAlignment="Center"
                                               HorizontalAlignment="Right"
                                               Margin="0,0,14,0" />
                                    <TextBlock Text="%"
                                               Grid.Column="1"
                                               VerticalAlignment="Center"
                                               HorizontalAlignment="Right"
                                               Margin="1,0,2,0" />
                        </Grid>
 
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>

    </Style>

这里要使用OnApplyTemplate方法,在该方法中找到Slider控件。

具体的,在自定义的ZoomBox类中,重写该方法,同时,在模板中,Slider的命名一定要是PART_Name形式,这样WPF就可以找到该控件,然后添加事件委托。

 
public Class ZoomBox
{
private Slider zoomSlider ;//slider成员变量

 public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();
            

            #region 搜索控件的模板元素

            this.zoomSlider = Template.FindName("PART_ZoomSlider", this) as Slider;
            this.zoomSlider.MouseWheel+= new MouseWheelEventHandler(this.Cus_MouseWheel);
            if (this.zoomSlider == null)
                throw new Exception("PART_ZoomSlider template is missing!");

            #endregion

            this.zoomSlider.ValueChanged += new RoutedPropertyChangedEventHandler<double>(this.ZoomSlider_ValueChanged);
          
        }


}

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值