Home > front end >  How to properly use radiobutton checked event in mvvm pattern?
How to properly use radiobutton checked event in mvvm pattern?

Time:06-07

When a particular radiobutton is checked/clicked on I want to write some specific text for each of those radiobuttons in a particular textblock. How do I do that following the MVVM pattern ?

In my main viewmodel I have the following code...

        public ICommand MyCommand { get; set; }
        private string _txt;
        public string Txt
        {
            get
            {
                return _txt;
            }
            set
            {
                _txt = value;
                OnPropertyChanged("Txt");
            }
        }

        private bool canexecutemethod(object parameter)
        {
            if (parameter != null)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        private void executemethod(object parameter)
        {
            //what to do here;
        }

        public MainViewModel()
        {
            MyCommand = new RelayCommand(executemethod);
        }

Also in the xaml:

<RadioButton VerticalAlignment="Center" Margin="15" Content="Name" Command="{Binding MyCommand}"/>
<RadioButton VerticalAlignment="Center" Margin="15" Content="Age" Command="{Binding MyCommand}"/>
<RadioButton VerticalAlignment="Center" Margin="15" Content="DOB" Command="{Binding MyCommand}"/>
<TextBlock Margin="5" Height="30" Width="150" Foreground="Red" Text="{Binding Txt, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>

Say when the first radiobutton is checked the textblock text should show some text like

Please enter a name

, when the second radiobutton is checked the textblock text should show some text like

Please enter a valid age/integer value

and so on...

CodePudding user response:

it can be done without view model participation:

<RadioButton VerticalAlignment="Center" Margin="15" Content="Name" Name="chkName"/>
<RadioButton VerticalAlignment="Center" Margin="15" Content="Age"  Name="chkAge"/>
<RadioButton VerticalAlignment="Center" Margin="15" Content="DOB"  Name="chkDob"/>

<TextBlock Margin="5" Height="30" Width="150" Foreground="Red">
    <TextBlock.Style>
        <Style TargetType="TextBlock">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=chkName,Path=IsChecked}" Value="True">
                    <Setter Property="Text" Value="Please enter a name"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding ElementName=chkAge,Path=IsChecked}" Value="True">
                    <Setter Property="Text" Value="Please enter a valid age/integer value"/>
                </DataTrigger> 
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>
  • Related