在WPF中运行时更改属性后出现不正确的外观

时间:2012-06-27 16:54:59

标签: c# wpf

我在WPF应用程序中遇到此问题,当控件的属性发生更改时,它们无法直观刷新!我正在使用snoop,我可以看到属性设置正确,但它不会影响控件。我注意到,如果我改变大小,它会刷新并纠正控件的外观。

此应用程序有多个页面(继承页面的控件),并且有导航栏可导航到每个页面。菜单中有一个选项允许用户更改视觉属性(控件的“FlowDirection”),这会调用一个方法,该方法加载一个资源字典,为整个框架元素应用新样式。我注意到如果用户更改它(通过使用该菜单项),显示的页面中的所有控件都会刷新并且工作正常。但是当我们导航到其他页面时,一些控件会刷新,而其中一些则不会! (正如我之前提到的,我使用了snoop,它表明在所有其他页面中为控件的属性设置了正确的值,如果我调整页面大小,它们会进入正确的位置)

我尝试了InvalidateVisual,InvalidateArrange,InvalidateMeasure,但没有人帮助过。

代码在WPF C#,.NET 4.0

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

如果您正在使用Binding,则需要使用DependencyProperties,或者确保在代码隐藏中实现INotifyPropertyChanged,并且每当属性更改时,您需要调用OnPropertyChanged(“PropertyName”),其中'PropertyName'是您的属性的名称,OnPropertyChanged是INotifyPropertyChanged接口的实现(如下所示)。

#region INotifyPropertyChanged Members

public event PropertyChangedEventHandler PropertyChanged;

public void OnPropertyChanged(string prop)
{
    if (PropertyChanged != null)
    {
        PropertyChanged(this, new PropertyChangedEventArgs(prop));
    }
}

#endregion