Silverlight Datagrid Row单击

Mar*_*per 7 silverlight datagrid

我有一个datagrid,其中包含一个包含复选框的列.我想在单击行时更改绑定的Selected属性的值:

alt text http://lh4.ggpht.com/_L9TmtwXFtew/Sw6YtzRWGEI/AAAAAAAAGlQ/pntIr2GU6Mo/image_thumb%5B3%5D.png

注意:我不想使用SelectedItemChanged事件,因为当网格中只有一行时,这不能正常工作.

Mar*_*per 7

通常我找到自己的解决方案的方式:

将MouseLeftButtonUp事件添加到datagrid:

<data:DataGrid x:Name="dgTaskLinks"
ItemsSource="{Binding TaskLinks}"
SelectedItem="{Binding SelectedTaskLink, Mode=TwoWay}"
MouseLeftButtonUp="dgTaskLinks_MouseLeftButtonUp"
>...
Run Code Online (Sandbox Code Playgroud)

走可视树以获取数据网格行:

private void dgTaskLinks_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
            {
                ///get the clicked row
                DataGridRow row = MyDependencyObjectHelper.FindParentOfType<DataGridRow>(e.OriginalSource as DependencyObject);

                ///get the data object of the row
                if (row != null && row.DataContext is TaskLink) 
                {
                    ///toggle the IsSelected value
                    (row.DataContext as TaskLink).IsSelected = !(row.DataContext as TaskLink).IsSelected;
                }

            }
Run Code Online (Sandbox Code Playgroud)

一旦找到,切换绑定的IsSelected属性是一种简单的方法:-)

希望这有助于其他人.