WPF控件SetValue区别

WPF control SetValue difference

这两行有什么区别?

第一个做了我期望的事情。它改变了宽度。 使用第二个时,什么也没有发生。为什么?

1)

columnSplitter.Width = new GridLength(myWidth);

2)

columnSplitter.SetValue(GridSplitter.WidthProperty, myWidth);

表达式

columnSplitter.Width = new GridLength(myWidth);

表示 columnSplitter 是一个 ColumnDefinition(它有一个 Width 属性 类型 GridLength),而不是 GridSplitter(它有一个 Width 属性 类型 double).

显然,您不能在 ColumnDefinition 上设置 GridSplitter.WidthProperty,等效的赋值将是

columnSplitter.SetValue(ColumnDefinition.WidthProperty, new GridLength(myWidth));