简体   繁体   English

WPF绑定表达式和依赖项属性

[英]WPF Binding Expression and Dependency property

I am trying to bind a text box to a dependency property to change its width. 我试图将文本框绑定到依赖项属性以更改其宽度。 The following code is not working. 以下代码无效。 Any help? 有帮助吗?

  public class ToolbarManager : DependencyObject
    {
        public static readonly DependencyProperty toolbarButtonWidth = DependencyProperty.Register("toolbarButtonWidth", typeof(Double), typeof(ToolbarManager), new FrameworkPropertyMetadata(32.0, FrameworkPropertyMetadataOptions.AffectsMeasure ));
        public static readonly DependencyProperty toolbarButtonHeight = DependencyProperty.Register("toolbarButtonHeight", typeof(Double), typeof(ToolbarManager), new FrameworkPropertyMetadata(32.0, FrameworkPropertyMetadataOptions.AffectsMeasure));

        public double ButtonWidth
        {
            get { return (double)GetValue(toolbarButtonWidth); }
            set { SetValue(toolbarButtonWidth, value); }
        }

        public double ButtonHeight
        {
            get { return (double)GetValue(toolbarButtonHeight); }
            set { SetValue(toolbarButtonHeight, value); }
        }

        public static ToolbarManager Instance { get; private set; }

        static ToolbarManager()
        {
            Instance = new ToolbarManager();

        }
    }

Here is the markup code: 这是标记代码:

<TextBox Width="{Binding Source={x:Static local:ToolbarManager.Instance}, Path=ButtonWidth, Mode=OneWay}" />

The default value works, but if I modify the value in code nothing happens ?!!! 默认值有效,但如果我修改代码中的值没有任何反应?!!!

rename your dependency property should solve your problem 重命名你的依赖属性应该解决你的问题

public class ToolbarManager : DependencyObject
{
    public static readonly DependencyProperty ButtonWidthProperty =
      DependencyProperty.Register("ButtonWidth", typeof(Double), typeof(ToolbarManager), new FrameworkPropertyMetadata(32.0, FrameworkPropertyMetadataOptions.AffectsMeasure ));
    public static readonly DependencyProperty ButtonHeightProperty =
      DependencyProperty.Register("ButtonHeight", typeof(Double), typeof(ToolbarManager), new FrameworkPropertyMetadata(32.0, FrameworkPropertyMetadataOptions.AffectsMeasure));

    public double ButtonWidth
    {
        get { return (double)GetValue(ButtonWidthProperty); }
        set { SetValue(ButtonWidthProperty, value); }
    }

    public double ButtonHeight
    {
        get { return (double)GetValue(ButtonHeightProperty); }
        set { SetValue(ButtonHeightProperty, value); }
    }

    public static ToolbarManager Instance { get; private set; }

    static ToolbarManager()
    {
        Instance = new ToolbarManager();
    }
}

hope this helps 希望这可以帮助

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM