XAML часть:
<TextBlock x:Name="myGroup" IsEnabled="{Binding Enable}"></TextBlock>
Описываю свойство, выше класс наследуется от интерфейса INotifyPropertyChanged (public partial class Index : Window, INotifyPropertyChanged):
public event PropertyChangedEventHandler PropertyChanged;
public bool _enable;
public bool Enable
{
get { return _enable; }
set
{
_enable = value;
PropertyChanged(this, new PropertyChangedEventArgs(nameof(Enable)));
}
}
Создаю метод проверки, есть ли запись в БД, исходя из результата проверки должно изменяться значение IsEnabled:
public void CheckEnable(bool result)
{
string connectionString = "SERVER = localhost; DATABASE = vbnzt; UID = vbnz; PASSWORD = ;";
MySqlConnection connection = new MySqlConnection(connectionString);
MySqlCommand check_group = new MySqlCommand("SELECT * FROM groups WHERE liderId = " + Properties.Settings.Default.id.ToString(), connection);
connection.Open();
MySqlDataReader cg_result = check_group.ExecuteReader();
if (cg_result.HasRows)
{
result = true;
}
else
{
result = false;
}
_enable = result;
connection.Close();
}
Вызываю проверку перед загрузкой контента (в методе MainWindow_Loaded, который привязан к this.Loaded += MainWindow_Loaded; в конструкторе):
CheckEnable(_enable);
В другом классе (кликая по кнопке), вызываю проверку, передавая туда значение true:
Index index = new Index();
index.CheckEnable(true);
Нужно чтобы при клике по этой кнопке без перезагрузки приложения изменялось значение IsEnabled у ТекстБлока.
Вообще если уже начали с биндами работать- делайте по паттерну mvvm, по началу будет сложным, кода станет больше, но со своего личного опыта скажу, что данными намного легче управлять станет. И да, в свойстве вы поднимаете событие propertychanged? В xaml
<TextBlock x:Name="myGroup" IsEnabled="{Binding Enable, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}">.
UpdateSourceTrigger=PropertyChanged - слушает событие
public void NotifyPropertyChanged([CallerMemberName] string property = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property));
}
Этот метод надо вызывать на Set свойства.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня есть хендл контрола, мне нужно получить текст, который он содержит, однако WM_GETTEXT возвращает пустую строку, я предполагаю, что в приложении,...
Нужно чтоб проверка деления на ноль находилась внутри лямбда виражения !
Я писал свое приложение, придерживаясь правил хорошего тона, но потом меня осенило:
На хостинге установлен yii2-basic, установлен не в корень, а в htdocs/basic