Wpf x:控件中的静态值不更新

Wpf x:控件中的静态值不更新,wpf,custom-controls,default-value,Wpf,Custom Controls,Default Value,我很想了解WPF的一个特殊部分。我正在为控件内的ColumnDefinition设置GridLength(width)值。该值正在引用静态类的静态属性。当然,它不支持INotifyPropertyChanged,但我只想更新该值,并且在创建该控件的下一个实例时,它应该采用新值。但它不是这样工作的 当绑定到通过静态属性获取其默认值的依赖项属性时,我经历了相同的行为。这永远不会被再次评估,这对我来说是合乎逻辑的。但是在创建下一个实例时,只使用字段应该是可以的 写这篇文章的时候我意识到了一件事。我说的

我很想了解WPF的一个特殊部分。我正在为控件内的ColumnDefinition设置GridLength(width)值。该值正在引用静态类的静态属性。当然,它不支持INotifyPropertyChanged,但我只想更新该值,并且在创建该控件的下一个实例时,它应该采用新值。但它不是这样工作的

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

写这篇文章的时候我意识到了一件事。我说的是一个自定义控件,它的值在模板中使用。所以我假设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="*" /> ...
//静态值
公共静态类DesignDefaultValue
{
静态设计默认值()
{
LabelColGridLength=新网格长度(22d);
}
公共静态GridLength LabelColGridLength{get;private set;}
}
//XAML使用
...

我希望您能在解决问题的同时添加一些代码。我认为在这种情况下,它符合附加的依赖属性,但为了确切地确定,您必须显示示例代码。@AnatoliyNikolaev:我相信这里不需要APs。控制是我自己的。这是关于CustomControls是如何实例化的。有人能确认FrameworkElementFactory在创建控件的下一个实例时保存了静态double by value,并且不会再次加载它吗?@AnatoliyNikolaev,这是一个很好的观点。x:Shared默认设置为true。如果OP将其设置为false,我想它应该可以工作:):)