【问题标题】:C# WPF Execute Action on select row that already selected in DataGridC# WPF 对已在 DataGrid 中选择的选择行执行操作
【发布时间】:2019-12-06 15:13:42
【问题描述】:

我正在尝试对使用DataGrid 选择的行执行操作SelectedItem。 我有很多代码,所以我只是把相关部分放在这里。 如果您需要更多信息,请告诉我。

当我单击它被选中的行并执行操作时。 它打开另一个窗口并让用户在那里做一些事情。 我也想让一个人再次选择这一行和行动 再次使用此Set 方法,但在我选择另一行之前它什么也不做,只有在我选择另一行之后它才能让我获得第一行。

简而言之,我希望能够在选择 row1 时执行一个操作,然后在再次选择 row1 时再次执行它。

我的 XAML 代码:

<DataGrid IsReadOnly="True" Name="DataGridProject" ItemsSource="{Binding ProjectList}"
AutoGenerateColumns="False" FontSize="22"
SelectedItem="{Binding SelectedRowItem,Mode=TwoWay}" DockPanel.Dock="Bottom" MaxHeight="300"
MinHeight="350" Height="350" SelectionMode="Single"/>

我的模型视图代码:

public class PreTestInformationProjectAccessVM : INotifyPropertyChanged
{
    public DataRowView SelectedRowItem
    {
        get
        {
            return _SelectedRowItem;
        }
        set
        {
            _SelectedRowItem = value;
             // ...        
        }
    }
}

【问题讨论】:

  • 那么,一个项目被选中了,如果用户再次点击已经选择的项目,你想执行一些操作吗?在那种情况下INotifypropertyChanged 不会有太大帮助,因为SelectedRowItem 没有改变。我想您将不得不为此使用鼠标事件(MouseLeftButtonDownClick,...)...
  • 这应该对你有帮助:stackoverflow.com/questions/51786072/…
  • @RolandDeschain 尝试使用 MVVM 样式时可以吗?
  • 当然,没有法律禁止在 MVVM 的代码中包含任何代码,但是如果您是纯粹主义者,您也可以查看混合交互功能,如本文所述:stackoverflow.com/a/7877807/7745011这样,您仍然可以在视图模型中很好地处理您的事件。

标签: c# wpf


【解决方案1】:

Select current item can't trigger selectedItem changed event,你可以试试鼠标事件:

<DataGrid.RowStyle>
     <Style TargetType="DataGridRow">
           <EventSetter Event="MouseDown"  Handler="Click_Do" />
     </Style>
</DataGrid.RowStyle>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-09
    • 2011-08-12
    • 1970-01-01
    • 2011-04-19
    • 2012-02-03
    • 2015-07-17
    • 1970-01-01
    相关资源
    最近更新 更多