データバインドを使ってコントロールの有効無効

INotifyPropertyChangedを継承したクラスを作成し、Windowのデータコンテキストに割り当てることで自動的にフラグの状況に応じて勝手にコントロールの状態が変更できる。

    <RadioButton x:Name="xxx" Content="aaa" HorizontalAlignment="Left" Margin="25,201,0,0" VerticalAlignment="Top" IsEnabled="{Binding IsEnabled}"/>

 

IsEnableを定義する

public class MainViewModel : INotifyPropertyChanged
{
    private bool _isEnabled;
    public bool IsEnabled
    {
        get { return _isEnabled; }
        set
        {
            _isEnabled = value;
            OnPropertyChanged();
        }
    }
    public MainViewModel()
    {
        // 初期値を設定
        _isEnabled = true;
    }
 
    // 以下は表示の切り替えをする為のもの
    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

  

DataContextに割り当てる

public partial class MainWindow : Window
{
    private MainViewModel _viewModel;

    public MainWindow()
    {
        InitializeComponent();

        _viewModel = new MainViewModel();
        this.DataContext = _viewModel;
    }
}

 

あとは

_viewModel.IsEnabled = true(false);

とすれば自動的に表示非表示が切り替わってくれる。

まあ知ってしまえば便利かもしれませんね。