在綁定使用FindAncestor有一個關於性能問題的問題。WPF FindAncestor性能問題
我想使用基地的DataContext的兒童用戶控制或ListBoxItem中/ ListViewItem的。
這個問題的替代方法是什麼?
在綁定使用FindAncestor有一個關於性能問題的問題。WPF FindAncestor性能問題
我想使用基地的DataContext的兒童用戶控制或ListBoxItem中/ ListViewItem的。
這個問題的替代方法是什麼?
給母公司的名稱,並綁定到它與ElementName=
。
而不是遍歷視覺樹與FindAncestor
,你可以遍歷當前控件的DataContext
。爲了能夠做到這一點,您需要在您的ViewModels
中向父母ViewModel
提供參考。我通常有一個基礎ViewModel
類有一個屬性Parent
和Root
:通過這個
:
public abstract class ViewModel : INotifyPropertyChanged
{
private ViewModel parentViewModel;
public ViewModel(ViewModel parent)
{
parentViewModel = parent;
}
/// <summary>
/// Get the top ViewModel for binding (eg Root.IsEnabled)
/// </summary>
public ViewModel Root
{
get
{
if (parentViewModel != null)
{
return parentViewModel.Root;
}
else
{
return this;
}
}
}
}
在XAML,然後你可以取代這個
<ComboBox x:Name="Sector"
ItemsSource="{Binding Root.SectorList}"
SelectedValuePath="Id"
SelectedValue="{Binding SectorId, Mode=TwoWay}" />
一要求:Root
屬性始終必須存在於最上面的ViewModel
。
我覺得FindAncestor是因爲ListBoxItems有自己的DataContext這裏的路要走。這是如何帶來性能問題的? –