当我在依赖对象中设置值时,如何更新我的用户控件?

本文关键字:更新 何更新 我的 控件 用户 依赖 对象 设置 | 更新日期: 2023-09-27 18:06:43

这是不工作的部分。我的依赖属性有一个默认值Entradas。输入0,该值必须在这一行运行:

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();
    }
}

当我在依赖对象中设置值时,如何更新我的用户控件?

您也可以考虑使用值转换器来完成此操作。您应该能够绑定网格。ColumnSpan将button0的属性附加到用户控件的Entrada属性上。然后使用值转换器将其转换为整数。这样就不必处理回调和状态/定时问题。

您的依赖属性初始化为Entero。因此,除非将值更改为Decimal,然后再次更改为Entero,否则不会碰到属性更改的回调代码。