title: WPF RadioButton Change Not Updating UI MVVM
body: <p>I have two radio buttons working as radioButton List in UI using MVVM. When the user control is loaded first time, one of the radio button is selected and the related controls are shown in UI... Now when I change the radio button, UI is not getting updated.</p>
  
  <p><strong>Below is the sample XAML:</strong></p>
  
  <pre><code>&lt;Label Grid.Column="0" Grid.Row="3" Content="Exchange Details:" Margin="3" VerticalContentAlignment="Center" Style="{StaticResource NormalLabelStyle}"&gt;&lt;/Label&gt;
   &lt;Grid Grid.Column="1" Grid.Row="3" Width="200"&gt;
    &lt;Grid.ColumnDefinitions&gt;
     &lt;ColumnDefinition Width="Auto"/&gt;
     &lt;ColumnDefinition Width="20"/&gt;
    &lt;ColumnDefinition Width="Auto"/&gt;
   &lt;/Grid.ColumnDefinitions&gt;
  &lt;RadioButton GroupName="rdoExchange" Content="Basic" IsChecked="{Binding Path=ExchangeDetailsBasic}"  Grid.Column="0" VerticalContentAlignment="Center" VerticalAlignment="Center"&gt;&lt;/RadioButton&gt;
  &lt;RadioButton GroupName="rdoExchange" Content="Advanced" IsChecked="{Binding Path=ExchangeDetailsAdvanced}" Grid.Column="2" VerticalContentAlignment="Center" VerticalAlignment="Center"&gt;&lt;/RadioButton
   &lt;/Grid&gt; 
  
   &lt;Label Grid.Column="3" Grid.Row="0" Content="Number of Mailbox Profiles:" VerticalContentAlignment="Center" Style="{StaticResource NormalLabelStyle}" Visibility="{Binding Path=IsAdvanced}" &gt;&lt;/Label&gt;
   &lt;telerik:RadNumericUpDown Grid.Column="4" Grid.Row="0" Margin="3" Value="{Binding Path=NumberofMailboxProfiles}" IsInteger="True" Minimum="1" Maximum="4"  HorizontalAlignment="Left" Visibility="{Binding Path=IsAdvanced}"&gt;&lt; /telerik:RadNumericUpDown&gt;
  </code></pre>
  
  <p><strong>Below is my ViewModel code:</strong></p>
  
  <pre><code> private enum ExchangeDetails{
          Basic,
          Advanced
   }
  
   private bool isBasicMode = true;
  
   public bool ExchangeDetailsBasic {
           get {
              return this.isBasicMode;
          }
  
          set {
              if (value) {
                  this.applicationSpecificRequirements[ExchangeDetailsKey] = ExchangeDetails.Basic.ToString();
                  if (!this.isBasicMode) {
                      this.CheckBasicOrAdvancedSelecteAndDisplayView();
                  }
              }
          }
      }
  
   public bool ExchangeDetailsAdvanced {
          get {
              return !this.isBasicMode;
          }
  
          set {
              if (value) {
                  this.applicationSpecificRequirements[ExchangeDetailsKey] = ExchangeDetails.Advanced.ToString();
                  this.CheckBasicOrAdvancedSelecteAndDisplayView();
              }
          }
      }
  
      public Visibility IsAdvanced { get; private set; }
  
      private void CheckBasicOrAdvancedSelecteAndDisplayView() {
          this.isBasicMode = this.applicationSpecificRequirements.ContainsKey(ExchangeDetailsKey) ? (this.applicationSpecificRequirements[ExchangeDetailsKey].Equals(ExchangeDetails.Basic.ToString()) ? true : false) : true;
          this.IsAdvanced = this.isBasicMode ? Visibility.Collapsed : Visibility.Visible;
      }
  </code></pre>