x:Control中的静态值不会更新

时间:2014-02-17 08:26:39

标签: wpf custom-controls default-value

我很想了解WPF的一个特殊部分。我正在为Control中的ColumnDefinition设置GridLength(宽度)值。该值引用静态类的静态属性。当然它不支持INotifyPropertyChanged但我想要的只是更新值,当创建此Control的下一个实例时,它应该采用新值。但它不会这样。

绑定到依赖项属性时,我遇到了相同的行为,该属性通过静态属性获取其默认值。这永远不会再次评估,这对我来说是合乎逻辑的。但是在创建下一个实例时,只使用一个字段就可以了。

我写这篇文章时我才意识到一件事。我说的是自定义控件,值在模板中使用。所以我假设ElementFactory是使用该值创建的,然后只使用其内部值推出少量控件。有人可以证实吗?

如果它是如何工作的,那么解决方法或更好的方法是什么:处理这个问题的正确方法是什么?我正在将一个新值应用于OnApplyTemplate中的控件资源。

感谢您对此的看法。最好的问候!

编辑:代码很简单:

// static values
public static class DesignDefaultValues
{
    static DesignDefaultValues()
    {
        LabelColGridLength = new GridLength(22d);
    }

    public static GridLength LabelColGridLength { get; private set; }
}


// XAML USAGE    
 <Style TargetType="{x:Type local:SomeClass}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:SomeClass}">
                        <Grid HorizontalAlignment="Stretch">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="{x:Static local:DesignDefaultValue.LabelColGridLength }" />
                                <ColumnDefinition Width="*" /> ...

0 个答案:

没有答案