Silverlight / WPF - How to bind the silverlight radio button with in the listbox in MVVM

Asked By Ramachandran on 05-Jul-12 01:45 AM
How to bind the silverlight radio button with in the listbox in MVVM

here is my coding for that:-

  <Grid Grid.Row="1">
          <StackPanel>
            <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Height="300" Width="950">
              <ScrollViewer.Content>
                <ListBox Grid.Row="1" Name="FactorsListBox" SelectedItem="{Binding FactorsSelectedItem,Mode=TwoWay}" ItemsSource="{Binding FactorsList,Mode=TwoWay}">
                  <ListBox.ItemTemplate>
                    <DataTemplate>
                      <StackPanel>
                        <Grid>
                          <Grid.RowDefinitions>
                            <RowDefinition Height="2*"/>
                          </Grid.RowDefinitions>
                          <Grid Grid.Row="0">
                            <Grid.ColumnDefinitions>
                              <ColumnDefinition Width="160"/>
                              <ColumnDefinition Width="140"/>
                              <ColumnDefinition Width="90"/>
                              <ColumnDefinition Width="100"/>
                              <ColumnDefinition Width="90"/>
                              <ColumnDefinition Width="30"/>
                              <ColumnDefinition Width="60"/>
                              <ColumnDefinition Width="120"/>
                              <ColumnDefinition Width="90"/>
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                              <RowDefinition Height="40"/>
                              <RowDefinition Height="40"/>
                              <RowDefinition Height="40"/>
                              <RowDefinition Height="40"/>
                              <RowDefinition Height="80"/>
                            </Grid.RowDefinitions>
                            <TextBlock Grid.Row="0" Margin="5,0,0,0" Text="Name" Grid.Column="0" Height="27" Width="35" HorizontalAlignment="Left" />
                              <TextBox Grid.Row="0" Margin="53,0,0,0" Text="{Binding Name,Mode=TwoWay,ValidatesOnDataErrors=True}" IsEnabled="{Binding Path=EnableSelectedItem,Mode=TwoWay}" Grid.Column="0" Height="27" Width="110" HorizontalAlignment="Left"  Name="txtName"/>
                              <TextBlock Name="TxtMandatory" Grid.Row="0" Margin="43,0,0,0" Foreground="Red" FontWeight="Bold" Visibility="Visible"  Text="*" Grid.Column="0" Height="27" Width="15" HorizontalAlignment="Left" />
                              <TextBox Grid.Row="1" Margin="3,0,0,0" Grid.Column="0" IsEnabled="{Binding Path=EnableSelectedItem,Mode=TwoWay}"  Width="160"   Height="80" TextWrapping="Wrap" VerticalScrollBarVisibility="Visible" Name="txtdesc" Text="{Binding Description, Mode=TwoWay}" Grid.RowSpan="2" AcceptsReturn="True"/>
                              <RadioButton Name="rdbtnImpacts"  GroupName="RB1" Margin="40,0,3,8" IsEnabled="{Binding Path=Impact,Mode=TwoWay}" IsChecked="{Binding Path=Impact,Mode=TwoWay}" VerticalAlignment="Bottom" Grid.Column="1" Content="Impacts" Grid.Row="1"></RadioButton>
                              <RadioButton Name="rdbtnRevenue"  GroupName="RB1" Grid.Row="1" Margin="40,33,3,0" IsEnabled="{Binding Path=Revenue,Mode=TwoWay}" IsChecked="{Binding Path=Revenue,Mode=TwoWay,ElementName=FactorsListBox}" VerticalAlignment="Top" Grid.Column="1" Content="Revenue" Grid.RowSpan="2"></RadioButton>
                              <TextBlock Name="txtblkFrom" Margin="0,4" Grid.Row="1" Grid.Column="2" Width="90" Text="From" Height="27"/>
                              <TextBlock Name="txtblkTo"  Margin="0,4,0,16" Grid.Row="2" Grid.Column="2" Width="90" Text="To" Height="27"/>
                              <ComboBox Name="ddlfrommonth" IsEnabled="{Binding Path=EnableSelectedItem,Mode=TwoWay}" Margin="46,4,54,4" Width="90" Grid.Row="1" Grid.Column="2" Height="27"
                                ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=ScrollViewer}, Path=DataContext.FromMonthList}"
                                DisplayMemberPath="MonthName"
                                  SelectedValuePath="MonthName"
                                SelectedValue="{Binding FromMonth,Mode=TwoWay}" Grid.ColumnSpan="2" />
                              <ComboBox Name="ddlTomonth" IsEnabled="{Binding Path=EnableSelectedItem,Mode=TwoWay}" Margin="46,4,54,16" Width="90" Grid.Row="2" Grid.Column="2" Height="27"
                               ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=ScrollViewer}, Path=DataContext.ToMonthList}"
                                DisplayMemberPath="MonthName"
                                  SelectedValuePath="MonthName"
                                SelectedValue="{Binding ToMonth,Mode=TwoWay}" Grid.ColumnSpan="2" />
                              <TextBlock FontWeight="Bold" Text="Max%Min%" Grid.Column="3" Width="90" Name="txtblkMaxMinPercent" Margin="70,20,30,5" Grid.ColumnSpan="2" />
                              <TextBlock Name="TxtMandatory1" Margin="46,10,0,5" Height="11"  Grid.Column="4" Width="10" Foreground="Red" FontWeight="Bold" Visibility="Visible"  Text="*"  HorizontalAlignment="Left" />
                              <TextBox Name="MaxPercen"  MaxLength="5" IsEnabled="{Binding Path=EnableSelectedItem,Mode=TwoWay}" Grid.Row="1" Grid.Column="3" Width="90" Height="27" Text="{Binding MaxperValue,Mode=TwoWay}" Grid.ColumnSpan="2" Margin="70,4,30,4" />
                              <TextBox Name="MinPercen" MaxLength="5" IsEnabled="{Binding Path=EnableSelectedItem,Mode=TwoWay}" Grid.Row="2"  Grid.Column="3" Width="90" Height="27"   Text="{Binding MinperValue,Mode=TwoWay}" Grid.ColumnSpan="2" Margin="70,4,30,16" />
                              <Slider  Name="WireFrameSlider" Orientation="Vertical" Minimum="{Binding ElementName=MinPercen,Path=Text,Mode=TwoWay}" Maximum="{Binding ElementName=MaxPercen,Path=Text,Mode=TwoWay}" Value="{Binding Effectpercentagevalue,Mode=TwoWay}"  Height="120" Grid.Column="4" Grid.RowSpan="3" Width="30" Cursor="Arrow" Grid.ColumnSpan="2" Margin="83,0,7,0"></Slider>
                              <TextBlock FontWeight="Bold" Text="Effect" Grid.Column="6" Width="90" Name="txtblkEffect" Grid.ColumnSpan="2" Margin="0,20,90,6" />
                              <TextBlock Text="{Binding ElementName=WireFrameSlider,Path=Value,Mode=TwoWay,StringFormat=\{0:n2\}}" Grid.Row="1" Grid.Column="6"  Height="27" Name="txtblkEffectPercentValue" Grid.ColumnSpan="2" Margin="0,4,115,4" />
                              <RadioButton Name="rdbtnEnabled" IsEnabled="{Binding Path=EnableSelectedItem,Mode=TwoWay}" GroupName="RB2" Grid.Row="1" IsChecked="{Binding Path=Enabled, Mode=TwoWay}" Margin="10,0,23,10" VerticalAlignment="Bottom" Grid.Column="7" Content="Enabled"></RadioButton>
                              <RadioButton Name="rdbtnDisabled" IsEnabled="{Binding Path=EnableSelectedItem,Mode=TwoWay}" GroupName="RB2" IsChecked="{Binding Path=Disabled,Mode=TwoWay}"  Grid.Row="1" Margin="10,33,30,0" VerticalAlignment="Top" Grid.Column="7" Content="Disabled" Grid.RowSpan="2"></RadioButton>
                              <TextBlock Name="TxtMandatory2" FontWeight="Bold" Text="*" Grid.Row="0" Grid.Column="8" Height="17" Margin="-10,0,0,-70" Width="15" Foreground="Red" Visibility="Visible"/>
                              <RadioButton Name="rdbtnPublic" IsEnabled="{Binding Path=EnableSelectedItem,Mode=TwoWay}" GroupName="RB3" Grid.Row="1" IsChecked="{Binding Path=Public,Mode=TwoWay}" Margin="103,0,27,10" VerticalAlignment="Bottom" Grid.Column="7" Content="Public" Grid.ColumnSpan="2"></RadioButton>
                              <RadioButton Name="rdbtnPrivate" IsEnabled="{Binding Path=EnableSelectedItem,Mode=TwoWay}" GroupName="RB3" IsChecked="{Binding Path=Private,Mode=TwoWay}" Grid.Row="1" Margin="103,33,27,0" VerticalAlignment="Top" Grid.Column="7" Content="Private" Grid.RowSpan="2" Grid.ColumnSpan="2"></RadioButton>
                              <TextBlock  Grid.Row="3" Visibility="Collapsed" Text="{Binding FactorID,Mode=TwoWay}" Grid.Column="3" Height="20" Width="50"/>
                              <TextBlock  Grid.Row="3" Visibility="Collapsed" Text="{Binding UserID,Mode=TwoWay}" Grid.Column="4" Height="20" Width="80"/>
                            <StackPanel Grid.Row="4" Grid.ColumnSpan="9" Orientation="Horizontal" HorizontalAlignment="Right">
                              <Button Name="btnsave"  Command="{Binding DataContext.SaveUDFactors,ElementName= FactorsListBox}" Content="Save" IsEnabled="{Binding Path=DisableSaveButton,Mode=TwoWay}" Margin="0,0,0,0"/>
                              <Button Name="btncancel" Command="{Binding DataContext.CancelCommand,ElementName= FactorsListBox}" Content="Cancel" IsEnabled="{Binding Path=DisableCancelButton,Mode=TwoWay}" Margin="10,0,0,0"/>
                              <Button Name="btndelete" Command="{Binding DataContext.DeleteUDFactors,ElementName= FactorsListBox}" Content="Delete" IsEnabled="{Binding Path=DisableDeleteButton,Mode=TwoWay}" Margin="10,0,0,0"/>
                              <Button Name="btnEdit" Command="{Binding DataContext.UpdateUDFactors,ElementName= FactorsListBox}" Content="Edit" IsEnabled="{Binding Path=DisableEditButton,Mode=TwoWay}" Margin="10,0,0,0"/>
                            </StackPanel>

                          </Grid>
                        </Grid>
                      </StackPanel>
                    </DataTemplate>
                  </ListBox.ItemTemplate>
                </ListBox>
              </ScrollViewer.Content>
            </ScrollViewer>
          </StackPanel>
        </Grid>