Silverlight DataGrid中的选定项

时间:2009-11-18 00:31:33

标签: c# silverlight-3.0 mvvm

我有一些这样的XAML(silverlight 3.0),

<data:DataGrid Margin="0,20,0,0" ItemsSource="{Binding Path=Upgrades}" =
    AutoGenerateColumns="False" VerticalAlignment="Center"
    AlternatingRowBackground="AliceBlue" HorizontalAlignment="Left"
    SelectionMode="Single">
    <data:DataGrid.RowStyle>
        <Style TargetType="data:DataGridRow">
            <Setter Property="IsSelected" Value="{Binding Path=IsSelected}"/>
        </Style>
     </data:DataGrid.RowStyle>
     <data:DataGrid.Columns>
         <data:DataGridTextColumn Header="Product Version" Binding="{Binding Path=ProductVersion}"/>
         <data:DataGridTextColumn Header="Upgrade Version" Binding="{Binding Path=UpgradeVersion}"/>
         <data:DataGridTextColumn Header="Description" Binding="{Binding Path=UpgradeDescription}" Width="350"/>
         <data:DataGridTextColumn Header="Database Lock Required" Binding="{Binding Path=DatabaseLockRequired}"></data:DataGridTextColumn>
     </data:DataGrid.Columns>
 </data:DataGrid>

所以基本上我有一个可观察的升级视图模型类列表,你可以在那里看到名为'Upgrades'的属性。每个升级视图模型类都具有绑定到的属性(例如ProductVersion等)。

我还添加了一个名为IsSelected的属性。我想绑定该属性,以便在网格视图中选择一个项目时,它会自动设置。在DataGridRow类上似乎没有名为IsSelected的属性。

我认为上面的示例在使用ListView时可以在WPF中使用。

2 个答案:

答案 0 :(得分:2)

尝试将此列添加到datagrid

<data:DataGridCheckBoxColumn  Header="IsSelected" Binding="{Binding Path=IsSelected, Mode=TwoWay}"></data:DataGridCheckBoxColumn>

然后将名为IsSelected的属性添加到viewmodel

        private bool _IsSelected = true;
        public bool IsSelected            
        {
            get
            {
                return _IsSelected;
            }
            set
            {
                if (value != _IsSelected)
                {
                    _IsSelected = value;
                    OnPropertyChanged("IsSelected");
                }
            }

现在,当您在数据网格中选中一个复选框时,它将在您的ViewModel

中被选中

答案 1 :(得分:0)

尝试绑定到Grid上的SelectedItem属性,这是一个

示例:

                <my:DataGrid Width="Auto" 
                     SelectedItem="{Binding Path=AcronymsDefinitions_SelectedItem}"
                     ItemsSource="{Binding Path=DataGridSource}"
                     VerticalContentAlignment="Stretch" 
                     HorizontalContentAlignment="Stretch" 
                     VerticalAlignment="Stretch" 
                     HorizontalAlignment="Stretch"
                     MaxColumnWidth="500"
                     Margin="0,0,0,0" 
                     Background="#FFC8C8C8" 
                     Foreground="#FF333333" 
                     VerticalGridLinesBrush="AntiqueWhite" 
                     HorizontalGridLinesBrush="AliceBlue" />