Когда аргумент запуска C# имеет «IsRegionA» на третьей позиции (разделенной пробелом), тогда я хочу скрыть определенный TabItem в wpf . Однако почему-то это не работает.
Что я пробовал
Я пробовал много разных способов отладки и улучшения кода, например:
- Проверьте выходные данные отладки Rider, и я не вижу ошибок привязки.
- Из флага IsRegionA в RegionSettings я проверил, что из Rider он может ссылаться на то место, где он используется в xaml.
- Я добавил больше журналов. Последовательность журналов во время выполнения иногда следующая:
- "Начать инициализацию компонентов"
< li>"Завершить настройку – флаг региона A" - "Инициализация компонентов завершена"
- "Завершить настройку - флаг региона A"
- "Начать инициализацию компонентов"
< li>"Завершена инициализация компонентов"
Кажется, все в порядке, но по-прежнему не работает, поэтому я не понимаю, в чем может быть проблема. Я подтверждаю, что флаг IsAsia действительно установлен как True, и я оценил. это с точкой останова.
Я использовал тот же способ привязки данных для отображения в сетке с помощью INotifyPropertyChanged, и это работает в пользовательском интерфейсе. Будет ли эта проблема относиться к формату/синтаксису TabItem xaml и нет проблем с привязкой?
Мой код
MainWindow.xaml
Код: Выделить всё
Код: Выделить всё
public MainWindow()
{
SetRegionFlag();
EnvironmentAndSettings.init(this);
Elastic.addLog(message: "Start initializing components");
InitializeComponent();
Elastic.addLog(message: "Finished initializing components");
}
private void SetRegionFlag() {
RegionSettings regionSettings = new RegionSettings;
string arg = Environment GetCommandLineArgs()[3];
regionSettings.SetRegionFlag(arg);
}
Код: Выделить всё
public class RegionSettings : INotifyPropertyChanged
{
private static bool _IsRegionA;
public event PropertyChangedEventHandler PropertyChanged;
public void SetRegionFlag (string arg)
{
if (arg.Equals("IsRegionA"))
{
IsRegionA = true;
Elastic.addLog(message: "Finish setting is Region A flag");
}
}
public bool IsRegionA
{
get => _IsRegionA;
set
{
if (HasChanged(_IsRegionA, value))
{
_IsRegionA = value;
NotifyPropertyChanged(nameof(IsRegionA));
}
}
}
private void NotifyPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
private bool HasChanged(object oldVal, object newVal)
{
return !Equals(oldVal, newVal);
}
}
Заранее большое спасибо.
Подробнее здесь: https://stackoverflow.com/questions/789 ... ot-working
Мобильная версия