У меня есть свойство зависимости DpValid в моем пользовательском элементе управления Просмотр1 и Просмотр2
Код: Выделить всё
.
Код: Выделить всё
Код: Выделить всё
public partial class View1: UserControl
{
public static readonly DependencyProperty DpValidProperty=
DependencyProperty.Register(nameof(DpValid), typeof(bool), typeof(View1), new PropertyMetadata(true, OnChanged));
public ListPropertiesView()
{
InitializeComponent();
}
public bool DpValid
{
get { return (bool)GetValue(DpValidProperty); }
set { SetValue(DpValidProperty, value); }
}
private static void OnChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (d is View1 control)
{
control.UpdateTemplateSelector();
}
}
private void UpdateTemplateSelector()
{
DataTemplateSelector ts = DpValid
? (DataTemplateSelector)Resources["DT1"]
: (DataTemplateSelector)Resources["DT2"];
treeview.ItemTemplateSelector = ts;
}
}
HorizontalContentAlignment TreeViewItem.HorizontalContentAlignment HorizontalAlignment Невозможно найти источник : RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ItemsControl', AncestorLevel='1'.
Но я не устанавливаю эти свойства.
Еще одно наблюдение, которое я сделал, заключается в том, что когда элемент управления содержимым переключается на View2, изменение значения свойства зависимостей инициируется со значением по умолчанию, даже если связанное свойство не было изменено.
Похоже, что во время этого значения измениться, мы пытаемся установить ItemTemplateSelector, который приводит к ошибке привязки, поскольку пользовательский интерфейс теперь находится в View2.
Подробнее здесь: https://stackoverflow.com/questions/792 ... hides-from