0

コントロールのプロパティが変更されたときに、視覚的に更新されない WPF アプリケーションでこの問題が発生しました。snoop を使用しており、プロパティが正しく設定されていることがわかりますが、コントロールには影響しません。サイズを変更すると、リフレッシュされ、コントロールの外観が修正されることに気付きました。

このアプリケーションには複数のページ (ページを継承するコントロール) があり、これらの各ページに移動するためのナビゲーション バーがあります。メニューには、ユーザーがビジュアル プロパティ (コントロールの「FlowDirection」) を変更できるオプションがあります。これは、フレームワーク要素全体に新しいスタイルを適用するリソース ディクショナリをロードするメソッドを呼び出します。ユーザーが(そのメニュー項目を使用して)変更すると、表示されているページ内のすべてのコントロールが更新され、正常に動作することに気付きました。しかし、他のページに移動すると、一部のコントロールが更新され、一部のコントロールは更新されません! (前に述べたように、snoop を使用したところ、他のすべてのページのコントロールのプロパティに正しい値が設定されていることがわかります。ページのサイズを変更すると、コントロールは正しい位置に配置されます)

InvalidateVisual 、 InvalidateArrange 、 InvalidateMeasure を試しましたが、どれも役に立ちませんでした。

コードは WPF C#、.NET 4.0 です。

なにか提案を?

4

1 に答える 1

0

Bindingを使用している場合は、DependencyPropertiesを使用するか、コードビハインドにINotifyPropertyChangedを実装していることを確認する必要があります。また、プロパティが変更されるたびに、OnPropertyChanged( "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 に答える