Свернуть определенный TabItem, если определенное логическое значение истинно – не работаетC#

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

Сообщение Anonymous »

Чего я хочу достичь
Когда аргумент запуска C# имеет «IsRegionA» на третьей позиции (разделенной пробелом), тогда я хочу скрыть определенный TabItem в wpf . Однако почему-то это не работает.
Что я пробовал
Я пробовал много разных способов отладки и улучшения кода, например:
  • Проверьте выходные данные отладки Rider, и я не вижу ошибок привязки.
  • Из флага IsRegionA в RegionSettings я проверил, что из Rider он может ссылаться на то место, где он используется в xaml.
  • Я добавил больше журналов. Последовательность журналов во время выполнения иногда следующая:
  • "Начать инициализацию компонентов"
    < li>"Завершить настройку – флаг региона A"
  • "Инициализация компонентов завершена"
Иногда это так:< /p>
  • "Завершить настройку - флаг региона A"
  • "Начать инициализацию компонентов"
    < li>"Завершена инициализация компонентов"
Оба не работают (это означает, что когда флаг IsRegionA находится в аргументе запуска, конкретный TabItem также не скрыт .
Кажется, все в порядке, но по-прежнему не работает, поэтому я не понимаю, в чем может быть проблема. Я подтверждаю, что флаг IsAsia действительно установлен как True, и я оценил. это с точкой останова.
Я использовал тот же способ привязки данных для отображения в сетке с помощью INotifyPropertyChanged, и это работает в пользовательском интерфейсе. Будет ли эта проблема относиться к формату/синтаксису TabItem xaml и нет проблем с привязкой?
Мой код
MainWindow.xaml MainWindow.xaml.cs:

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

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);
}
Класс RegionSetting:

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

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
Ответить

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

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

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

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

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