如何在datagrid中选择单选按钮,然后单击该行选择单选按钮

时间:2014-11-30 19:20:05

标签: c# .net wpf datagrid radio-button

那是我的数据网格:

SelectHouse.xaml.cs

<DataGrid x:Name="HousesDataGrid" 
                  ItemsSource="{Binding AvailableHouses}"  
                  AutoGenerateColumns="False" 
                  CanUserAddRows="False"
                  IsReadOnly="True">

    <DataGrid.Columns>

        <DataGridTemplateColumn Header="Select:" Width="60" >
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                <RadioButton 
                    GroupName="GroupHouses" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>

        <DataGridTemplateColumn Header="House" Width="Auto">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Name, Mode=OneWay}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>

</DataGrid>

SelectHouseViewModel:

public List<Houses> AvailableHouses
{
    get { return _availableHouses; }
}

我有两个问题/问题:

  1. 如何在我的viewmodel中获取所选房屋?
  2. 如果我想选择第2行,我必须检查无线电按钮。如果我点击第二行中的任何一列,例如如果我点击第二行中的房子列,应该选择第二行的单选按钮,是否可以选择单选按钮

1 个答案:

答案 0 :(得分:2)

1)要获取DataGrid的选定行,只需将它的SelectedItem属性绑定到ViewModel a-la SelectedItem = {Binding SelectedHouse}中的可设置House,其中SelectedHouse是VM中的属性。 / p>

2)为什么你甚至需要一个单选按钮 - 是否只是在视觉上重新强制选择行?如果是这种情况,那么您需要将一个IsSelected属性添加到您的家用VM,并将单选按钮的IsSelected属性绑定到它。您还需要挂钩DataGrid的SelectionChanged事件以保持所有状态一致。