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



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

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

我尝试了 无效视觉 , 无效安排 , 无效测量,但没有一个帮助。

代码采用 WPF C#, .NET 4.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

最新更新