Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在依赖项对象中设置值时,如何更新usercontrol?_C#_Wpf - Fatal编程技术网

C# 在依赖项对象中设置值时,如何更新usercontrol?

C# 在依赖项对象中设置值时,如何更新usercontrol?,c#,wpf,C#,Wpf,这是不起作用的部分。My dependency属性有一个默认值,即Entradas.entro,该值必须在此行中运行: Grid.SetColumnSpan(button0, 3); 它应该在我的用户控件设计中刷新它,但是没有任何更改 public partial class TableroUserControl : UserControl { public enum Entradas { Entero, Decimal } public En

这是不起作用的部分。My dependency属性有一个默认值,即Entradas.entro,该值必须在此行中运行:

Grid.SetColumnSpan(button0, 3);
它应该在我的用户控件设计中刷新它,但是没有任何更改

public partial class TableroUserControl : UserControl
{
    public enum Entradas
    {
        Entero, Decimal
    }

    public Entradas Entrada
    {
        get { return (Entradas)GetValue(EntradaProperty); }
        set { SetValue(EntradaProperty, value); }
    }

    static void textChangedCallBack(DependencyObject property, DependencyPropertyChangedEventArgs args)
    {
        Button button0 = ((TableroUserControl)property).button0;

        switch ((Entradas)args.NewValue)
        {
            case Entradas.Entero:
                Grid.SetColumnSpan(button0, 3);
                break;
            case Entradas.Decimal:
                Grid.SetColumnSpan(button0, 2);
                break;
        }
    }

    public static readonly DependencyProperty EntradaProperty =
        DependencyProperty.Register("Entrada", typeof(Entradas), typeof(TableroUserControl), new PropertyMetadata(Entradas.Entero, new PropertyChangedCallback(textChangedCallBack)));

    public TableroUserControl()
    {
        InitializeComponent();
    }
}

您的依赖项属性已初始化为Entero。因此,除非将值更改为Decimal,然后再次更改回Entero,否则您不会点击属性更改的回调代码。
确保COLSPAN SETER代码被命中。

你也可以考虑使用一个值转换器。您应该能够将button0的Grid.ColumnSpan附加属性绑定到用户控件的Entrada属性。然后使用值转换器将其转换为整数。这样,您就不必处理回调和状态/时间问题