Я пытался успешно связать свойство isEnabled Button с логической переменной.После обновления логического значения состояние кнопки не изменяется.Я использовал полезную документацию Microsoft для этой темы, чтобы сформировать свой код, найденный здесь .При поиске в StackOverflow я наткнулся на эту статью о похожей проблеме.Это не помогло мне исправить эту ошибку.
public class BackState : INotifyPropertyChanged
{
public bool _isEnabled;
public bool isEnabled
{
get
{
return _isEnabled;
}
set
{
if (value != _isEnabled)
{
_isEnabled = value;
NotifyPropertyChanged("isEnabled");
Debug.WriteLine("NotifyPropertyChanged was called successfully");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string info)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(info));
}
}
Фрагмент кода XAML:
<Grid DataContext="{Binding BackObject}" HorizontalAlignment="Stretch" Height="250" VerticalAlignment="Top">
<Button x:FieldModifier="public" IsEnabled="{Binding isEnabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Click="Back_Click" x:Name="Back" Foreground="DarkGray" Content="" FontFamily="Segoe MDL2 Assets" Background="#33FFFFFF" FontSize="20" Margin="40,70,0,133" />
</Grid>
Моя логическая функция изменения
public static void ChangeState(bool b)
{
BackState bs = new BackState();
if(b == true)
{
bs.isEnabled = true;
Debug.WriteLine("Enabled Property");
}else{
bs.isEnabled = false;
Debug.WriteLine("Disabled Property");
}
}
А вот определение BackObject
<local:BackState x:Key="BackObject"/>
В графическом интерфейсе кнопка постоянно остается активной.(Независимо от того, вызвана ли функция ChangeState). Она должна изменить / отключить в соответствии с вызываемой функцией.