0

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

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

我尝试了 InvalidateVisual 、 InvalidateArrange 、 InvalidateMeasure ,但它们都没有帮助。

代码在 WPF C#、.NET 4.0 中

有什么建议吗?

4

1 回答 1

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
于 2012-06-27T20:04:40.583 回答