Hi,
i have a datagrid with a columns name, age and gender. if i double click on a row , that rows details should populate in corresponding textboxes provided. if the gender is male, male radiobutton should select otherwise famale radio button should select. In the database i saved true for male and false for female. how can i do it using databinding.Everything works but the gender radiobutton is not populating. Please help me...
My xaml code
<Window x:Class="WPFTestProject.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:converter="clr-namespace:WPFTestProject.Converter"
Title="MainWindow" Height="484" Width="1116" WindowState="Maximized" Initialized="Window_Initialized">
<Window.Resources>
<converter:StringToBooleanConverter x:Key="StringToBool"></converter:StringToBooleanConverter>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="584*" />
<ColumnDefinition Width="510*" />
</Grid.ColumnDefinitions>
<Grid Height="421" Margin="12,12,0,0" Name="grid1" VerticalAlignment="Top" HorizontalAlignment="Left" Width="558">
<Grid.RowDefinitions>
<RowDefinition Height="50*" />
<RowDefinition Height="42*" />
<RowDefinition Height="44*" />
<RowDefinition Height="43*" />
<RowDefinition Height="46*" />
<RowDefinition Height="45*" />
<RowDefinition Height="45*" />
<RowDefinition Height="44*" />
<RowDefinition Height="62*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="194*" />
<ColumnDefinition Width="364*" />
</Grid.ColumnDefinitions>
<Label Content="Name:" Height="28" HorizontalAlignment="Left" Margin="0,22,0,0" Name="label1" VerticalAlignment="Top" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="0,27,0,0" Name="NameTextBox" VerticalAlignment="Top" Width="211" Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=LostFocus, ValidatesOnDataErrors=True, NotifyOnValidationError=True}" Grid.Column="1" />
<Label Content="Father's Name:" Height="28" HorizontalAlignment="Left" Margin="0,14,0,0" Name="label2" VerticalAlignment="Top" Grid.Row="1" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="0,14,0,0" Name="FatherNameTextBox" VerticalAlignment="Top" Width="211" Text="{Binding FatherName, Mode=TwoWay,UpdateSourceTrigger=LostFocus}" Grid.Column="1" Grid.Row="1" />
<Label Content="DOB:" Height="28" HorizontalAlignment="Left" Margin="0,16,0,0" Name="label3" VerticalAlignment="Top" Grid.Row="2" />
<DatePicker Height="25" HorizontalAlignment="Left" Margin="0,19,0,0" Name="DOBDatePicker" VerticalAlignment="Top" Width="211" Text="{Binding DOB, Mode=TwoWay,UpdateSourceTrigger=LostFocus}" Grid.Column="1" Grid.Row="2" />
<Label Content="Gender:" Height="28" HorizontalAlignment="Left" Margin="0,15,0,0" Name="label4" VerticalAlignment="Top" Grid.Row="3" />
<RadioButton Content="Male" Height="16" Margin="1,27,0,0" Name="MaleRadioButton" VerticalAlignment="Top" IsChecked="{Binding Gender, Mode=TwoWay,UpdateSourceTrigger=LostFocus, Converter={StaticResource StringToBool}, ConverterParameter=Male}" Grid.Column="1" HorizontalAlignment="Left" Width="42" Grid.Row="3" />
<RadioButton Content="Female" Height="16" HorizontalAlignment="Left" Margin="56,27,0,0" Name="FemaleRadioButton" VerticalAlignment="Top" IsChecked="{Binding Gender, Mode=TwoWay,UpdateSourceTrigger=LostFocus, Converter={StaticResource StringToBool}, ConverterParameter=Female}" Grid.Column="1" Grid.Row="3" />
<Label Content="State:" Height="28" HorizontalAlignment="Left" Margin="0,18,0,0" Name="label6" VerticalAlignment="Top" Grid.Row="4" />
<ComboBox Height="23" HorizontalAlignment="Right" Margin="0,23,153,0" Name="StateComboBox" VerticalAlignment="Top" Width="211" Text="{Binding State, Mode=TwoWay,UpdateSourceTrigger=LostFocus}" Grid.Column="1" Grid.Row="4" />
<Label Content="District:" Height="28" HorizontalAlignment="Left" Margin="1,17,0,0" Name="label5" VerticalAlignment="Top" Grid.Row="5" />
<ComboBox Height="23" HorizontalAlignment="Right" Margin="0,22,153,0" Name="DistrictComboBox" VerticalAlignment="Top" Width="211" Text="{Binding District, Mode=TwoWay,UpdateSourceTrigger=LostFocus}" Grid.Column="1" Grid.Row="5" />
<Button Content="Save" Height="23" HorizontalAlignment="Left" Margin="1,22,0,0" Name="SaveButton" VerticalAlignment="Top" Width="75" Click="SaveButton_Click" Grid.Column="1" Grid.Row="6" />
<Button Content="Delete" Height="23" HorizontalAlignment="Left" Margin="84,22,0,0" Name="DeleteButton" VerticalAlignment="Top" Width="75" Grid.Column="1" Grid.Row="6" Click="DeleteButton_Click" />
<Button Content="Refresh" Height="23" HorizontalAlignment="Left" Margin="165,22,0,0" Name="RefreshButton" VerticalAlignment="Top" Width="75" Grid.Column="1" Grid.Row="6" Click="RefreshButton_Click" />
</Grid>
<DataGrid AutoGenerateColumns="False" Grid.Column="1" Height="200" HorizontalAlignment="Left" Margin="0,12,0,0" Name="PersonDatagrid" VerticalAlignment="Top" Width="498" MouseDoubleClick="PersonDatagrid_MouseDoubleClick">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Width="100" Binding="{Binding Name}"/>
<DataGridTextColumn Header="Father's name" Width="100" Binding="{Binding FatherName}" />
<DataGridTextColumn Header="DOB" Width="70" Binding="{Binding DOB, StringFormat=dd/MM/yyyy}" />
<DataGridTextColumn Header="Gender" Width="50" Binding="{Binding Gender, Converter={StaticResource StringToBool}}" />
<DataGridTextColumn Header="State" Width="80" Binding="{Binding State}" />
<DataGridTextColumn Header="District" Width="98" Binding="{Binding District}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
My converter class
class StringToBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((bool)value == false)
{
return "Female";
}
else
{
return "Male";
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (parameter.ToString() == "Male")
{
return true;
}
else
{
return false;
}
}
}
Row double click event
private void PersonDatagrid_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
this.DataContext = PersonDatagrid.SelectedItem as PersonBO;
}