gpt4 book ai didi

wpf - 如何从另一个 ".cs"文件中获取 DataGrid.SelectedIndex?(MVVM)

转载 作者:行者123 更新时间:2023-12-03 10:37:54 25 4
gpt4 key购买 nike

早些时候,当我想编辑 DataGrid 中的一行时,我只是将光标设置在 DataGtid 的行上,并以代码隐藏形式(xxx.xaml.cs)的方法编写了这样的代码:

int k = XXXDataGrid.SelectedIndex;

然后我可以从 DataGrid 的一行中检索数据。
现在我尝试使用 WPF 的 MVVM 模式,并且我已经读过我所有的 CRUD 操作都应该用模型编写。好的。我尝试采用“DataGrid.SelectedIndex”,但如果不在代码隐藏文件中创建处理程序就不可能。

我想知道如何从位于 MVVM 的“模型”中的其他类中获取“DataGrid.SelectedIndex”和一行 DataGrid 的数据。

值类型何时存储在堆栈中?
我读过很多 C# 书籍,当我读到值和引用类型时,我总会想到一个问题:值类型什么时候存储在堆栈中?原因程序员无法从类中初始化任何值类型。

最佳答案

您的 ViewModel 将具有填充模型对象的属性。在这里您将分配它们,以便 View 能够显示数据。

    public ParentModel 
{
get { return parentModel; }
private set
{
if (parentModel != value)
{
parentModel = value;
RaisePropertyChanged("ParentModel");
}
}
}


public int SelectedItemIndex
{
get { return selectedItemIndex; }
set
{
if (selectedItemIndex != value)
{
selectedItemIndex = value;
RaisePropertyChanged("SelectedItemIndex");
}
}
}

View 将包含用于显示数据的对象,如 DataGrid、ComboBox 等。您可以使用 ItemTemplates 自定义数据的显示方式,但关键是 bind您的数据到控件。这可以允许数据以仅 ViewModel 到 View (OneWay) 或 View 到 ViewModel (OneWayToSource) 或两者 (TwoWay) 的方向模式流动。因此,当用户更改所选索引时,数据将流回 ViewModel,因为它在下面为 TwoWay 设置。这里的 ItemsSource 设置为 OneWay,因此只有 ViewModel 可以为 View 更改它。
    <DataGrid ItemsSource="{Binding Path=ParentModel.Items, Mode=OneWay}"
SelectedIndex="{Binding Path=SelectedItemIndex, Mode=TwoWay}" />

如果 ViewModel 需要与 BusinessLogic 交互,只需传递 Data。如果单独的 ViewModel 需要这些信息,您将需要使用框架中可用的概念,例如。 EventAggregator(Prism),用于传递数据,因为它们彼此不了解。

MVVM 的核心概念是模型和 WPF 控件的属性的绑定(bind),就像这样。我认为您需要阅读更多内容以充分利用其功能和设计。一些非常有用的问题/答案可以在 StackOverflow 上找到,MSDN 有几个很好的教程等。

关于wpf - 如何从另一个 ".cs"文件中获取 DataGrid.SelectedIndex?(MVVM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18379701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com