【发布时间】: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没有改变。我想您将不得不为此使用鼠标事件(MouseLeftButtonDown,Click,...)... -
@RolandDeschain 尝试使用 MVVM 样式时可以吗?
-
当然,没有法律禁止在 MVVM 的代码中包含任何代码,但是如果您是纯粹主义者,您也可以查看混合交互功能,如本文所述:stackoverflow.com/a/7877807/7745011这样,您仍然可以在视图模型中很好地处理您的事件。