Ресурс конвертера WPF приводит к исчезновению несвязанного содержимого пользовательского интерфейсаC#

Место общения программистов C#
Anonymous
Ресурс конвертера WPF приводит к исчезновению несвязанного содержимого пользовательского интерфейса

Сообщение Anonymous »

Я работаю разработчиком WPF уже около 10 лет и видел много идиотизма во всех формах и размерах, но сегодня я только что наткнулся на свежую партию коровьего навоза, который просто превосходен. Фактически, каждый существующий пирог.
Размещение конвертера вверху списка ресурсов Windows каким-то образом нарушает ресурсы объектов пользовательского интерфейса, которые идут после него.
Вот простейший пример приложения, воспроизводящего эту проблему, с наименьшим количеством кода, который я могу собрать:










0
1
2
3








Конвертер:
using System;
using System.Globalization;
using System.Windows.Data;
using System.Windows.Markup;

namespace WpfApp1.Converters
{
public class BaseConverter : MarkupExtension, IValueConverter
{
public virtual object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return Binding.DoNothing;
}

public virtual object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return Binding.DoNothing;
}

public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
}

Это всего лишь простая попытка загрузить переменное количество элементов внутри ItemsControl, где каждый элемент представляет собой ContentControl, который заполняется как Grid, определенный в ресурсе.
Вот как предположительно должно выглядеть приложение на основе этого xaml:
Изображение

Это похоже на то, что x:Shared ломается и становится правдой или что-то, только потому, что ресурс конвертера был раньше этого.
Вещи, которые я тестировал:
  • Имя ключа конвертера не имеет значения
  • Тип преобразователя и/или реализация метода не имеют значения.
  • Элемент ItemsControl, имеющий привязанный ItemsSource, а не жестко запрограммированные записи, не имеет значения. не имеет значения
  • Фактическое содержимое внутри Grid не имеет значения
Конечно, удаление исправляет это, но вот что самое интересное: Размещение его последним в списке ресурсов ТАКЖЕ исправляет это.
...Ух ты. Просто вау. Что это это? Я мертв? Я мечтаю? Первоапрельский день запрограммирован в WPF, но он содержит ошибки (как и все остальное) и наступил на месяц позже? Может кто-нибудь объяснить это? Я схожу с ума.
Файл проекта, если это важно:



WinExe
net5.0-windows
true





Подробнее здесь: https://stackoverflow.com/questions/784 ... -disappear

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