WPF按钮contentproperty问题

时间:2013-11-09 19:44:24

标签: wpf-controls

我已经创建了一个从WPF中的Button派生的自定义控件。我已重写DefaultStyleKeyProperty,然后为Content设置依赖项属性。此控件具有自己的OnMouseEnter,OnMouseLeave,OnMouseDown和OnMouseUp样式。使用时,会显示事件和自定义样式,但不显示内容。我如何设置内容?

控件的代码如下:

public class SymbolButton : Button
    {
        public static readonly DependencyProperty ContentProperty;
        static SymbolButton()
        {
           DefaultStyleKeyProperty.OverrideMetadata(typeof(SymbolButton), new FrameworkPropertyMetadata(typeof(SymbolButton)));
           FrameworkPropertyMetadata metadata = new FrameworkPropertyMetadata();
           metadata.AffectsArrange = true;
           ContentProperty = DependencyProperty.Register("Content",
                            typeof(string), typeof(SymbolButton), new UIPropertyMetadata(null));

        }
        Point startPoint = new Point(0.5, 0);
        Point endPoint = new Point(0.5, 1);
        public string Content
        {
            get { return (string)GetValue(ContentProperty); }
            set { SetValue(ContentProperty, value); }
        }

        public SymbolButton()
        {
            //this.Content = "Symbol";
            ButtonDefaultDisplay();
            this.BorderThickness = new Thickness(3.3);
            this.FontSize = 21;
            this.FontStyle = FontStyles.Oblique;
        }

        private void ButtonDefaultDisplay()
        {
            this.Foreground = Brushes.BlueViolet;
            this.Background = new LinearGradientBrush(Colors.LightBlue,
                                                        Colors.MediumAquamarine,
                                                        startPoint, endPoint);
            this.BorderBrush = Brushes.DarkTurquoise;
        }

        private void ButtonClickDisplay()
        {
            this.Foreground = Brushes.LightCyan;
            this.Background = new LinearGradientBrush(Colors.MidnightBlue,
                                                       Colors.DarkTurquoise,
                                                       startPoint, endPoint);
            this.BorderBrush = Brushes.Cyan;
        }

        private void ButtonHighlight()
        {
            this.Foreground = Brushes.Red;
            this.Background = new LinearGradientBrush(Colors.MistyRose,
                                                       Colors.LightBlue,
                                                       endPoint, startPoint);
            this.BorderBrush = Brushes.Plum;
        }

        protected override void OnMouseDown(MouseButtonEventArgs e)
        {
            ButtonClickDisplay();
        }

        protected override void OnMouseUp(MouseButtonEventArgs e)
        {
            ButtonHighlight();
        }

        protected override void OnMouseEnter(MouseEventArgs e)
        {
            ButtonHighlight();
        }

        protected override void OnMouseLeave(MouseEventArgs e)
        {
            ButtonDefaultDisplay();
        }
    }

0 个答案:

没有答案