WPF:DataGridRow选择

时间:2013-06-14 21:06:11

标签: wpf select mvvm datagrid

如何清理以前选择的行?

我有这种搜索具有给定ID的项目的方法。

   private void TreeView_OnSelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
    {

        foreach (MessageFieldViewModel rowItem in Datagrid.ItemsSource)
        {

            if (_mainWindowModel != null)
                _mainWindowModel.SelectedMessageElement = (MessageElementViewModel)e.NewValue;

            var row = Datagrid.ItemContainerGenerator.ContainerFromItem(rowItem) as DataGridRow;

            if (_mainWindowModel != null && _mainWindowModel.SelectedMessageElement != null)
            {
                if (rowItem.Id == _mainWindowModel.SelectedMessageElement.Id)
                {
                    if (row != null)
                        row.Background = Brushes.DarkSalmon;
                }

                row.Background.ClearValue();
            }
            // if (item != null) row.Background.ClearValue(rowItem.Id);
            //  break;
        }

这将选择给定id的行。但如果我想选择另一个ID仍然选择以前的ID。 如何删除以前选择的ID并仅显示新选择的ID?

1 个答案:

答案 0 :(得分:0)

好的,我们去吧

<强> XAML

<TreeView Name="Tree" Width="50" Height="100"
          ItemsSource="{Binding YourTree}" 
          SelectedItemChanged="Tree_SelectedItemChanged" 
          SelectedValuePath="yourIdProperty"/>
<DataGrid Name="myDatagrid" Width="100" Height="100"
          ItemsSource="{Binding YourList}"
          SelectedItem="{Binding YourSelectedItem,UpdateSourceTrigger=PropertyChanged}"
           SelectedValuePath="Id"/>

<强>代码隐藏

    private void Tree_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
    {
        var tree = sender as TreeView;
        myDatagrid.SelectedValue = tree.SelectedValue;
    }

<强>视图模型

    public List<yourClass> YourList { get; set; }

    private yourClass yourSelectedItem;
    public yourClass YourSelectedItem
    {
        get { return yourSelectedItem; }
        set
        {
            yourSelectedItem = value;
            OnPropertyChanged("YourSelectedItem");
        }
    }

您需要根据您的属性SelectedValuePath设置代表您的身份但为绑定,就像字符串一样"Id"