Обратный вызов изменения значения свойства зависимостей вызывается, когда элемент управления скрывается из пользовательсC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Обратный вызов изменения значения свойства зависимостей вызывается, когда элемент управления скрывается из пользовательс

Сообщение Anonymous »

У меня есть элемент управления содержимым с шаблоном управления содержимым, который показывает два элемента управления в пользовательском интерфейсе в соответствии с содержимым (как показано ниже).
У меня есть свойство зависимости DpValid в моем пользовательском элементе управления Просмотр1 и Просмотр2 В моем View1 я использую древовидное представление для отображения некоторых данных. У меня есть 2 селектора шаблонов, которые должно использовать древовидное представление в соответствии с DpValid
.

Код: Выделить всё

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;
}
}
Это работает. Но я получаю ошибку привязки при переключении с View1 на View2
HorizontalContentAlignment TreeViewItem.HorizontalContentAlignment HorizontalAlignment Невозможно найти источник : RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ItemsControl', AncestorLevel='1'.
Но я не устанавливаю эти свойства.
Еще одно наблюдение, которое я сделал, заключается в том, что когда элемент управления содержимым переключается на View2, изменение значения свойства зависимостей инициируется со значением по умолчанию, даже если связанное свойство не было изменено.
Похоже, что во время этого значения измениться, мы пытаемся установить ItemTemplateSelector, который приводит к ошибке привязки, поскольку пользовательский интерфейс теперь находится в View2.

Подробнее здесь: https://stackoverflow.com/questions/792 ... hides-from
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»