这是不起作用的部分。我的依赖项属性有一个默认值,即Entradas.Entero,该值必须在此行运行:
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();
}
}
答案 0 :(得分:0)
您的依赖项属性已初始化为Entero。因此,除非将值更改为十进制然后再次更改回Entero,否则您将不会更改属性更改的回调代码。 确保命中了colspan setter代码。
答案 1 :(得分:0)
您也可以考虑使用值转换器执行此操作。您应该能够将button0的Grid.ColumnSpan附加属性绑定到用户控件的Entrada属性。然后使用值转换器将其转换为整数。这样您就不必处理回调和状态/时序问题。