我希望有人能幫助我這一個:WPF用戶控件數據綁定性能
我創建了一個WPF用戶控件(稱之爲MainControl)使用一對夫婦的其他用戶控件(UserControlA和UserControlB)的。這兩個用戶控件綁定到在我的MainControl.xaml.cs類(MainControlDependencyProperty1到3)中創建的依賴項屬性。那些DP(在許多情況下)從ViewModel綁定到DP。下面的代碼說明了這一點:
<StackPanel>
<doesntmatter:UserControlA
Property1="{Binding Path=MainControlProperty1, RelativeSource={RelativeSource AncestorType={x:Type views:MainControl}, Mode=FindAncestor}, Mode=OneWay}"
Property2="{Binding Path=MainControlProperty2, RelativeSource={RelativeSource AncestorType={x:Type views:MainControl}, Mode=FindAncestor}, Mode=TwoWay}"
/>
<doesntmatter:UserControlB
Property2="{Binding Path=MainControlProperty2, RelativeSource={RelativeSource AncestorType={x:Type views:MainControl}, Mode=FindAncestor}, Mode=TwoWay}"
Property3="{Binding Path=MainControlProperty3, RelativeSource={RelativeSource AncestorType={x:Type views:MainControl}, Mode=FindAncestor}, Mode=TwoWay}"
/>
</StackPanel>
這樣做,我有一個可以在我的應用程序的幾個不同部分重複使用一個獨立的控制。我把它拖到AXML,綁定正確的DP並且生活是好的(我沒有在它上面存儲任何數據)。 UserControlsA和B也在其他幾個地方與MainControl分開使用。 這一切工作正常,但我想提高性能,所以我有幾個問題:
1 - 是否將UserControlsA和B綁定到我的MainControl的正確方法?我希望它完全獨立於我的ViewModel。我知道DP是在WPF中進行數據綁定的首選方法,但我不確定是否以最好的方式(和最快)執行此操作。我做了一次,並遵循配方...
2 - 有些情況下我不想使用UserControlB。我使它不可見,但當ViewModel中的DP更新時,控件中的綁定和其他所有內容仍在執行中。有沒有一種簡單和無痛的方式來禁用DP或整個控制,所以我可以消除開銷? (this.Disable = true;不要這樣做)。我想UserControlB DP的表現就像它們不存在一樣...