Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何区分UI绑定模型对象和传递到中间层的模型对象_C#_Wpf_Silverlight - Fatal编程技术网

C# 如何区分UI绑定模型对象和传递到中间层的模型对象

C# 如何区分UI绑定模型对象和传递到中间层的模型对象,c#,wpf,silverlight,C#,Wpf,Silverlight,==>a)UI模型对象:即我有属性更改通知的类(INotifyPropertyChanged),SelectedItemXXX绑定到某个组合框SelectedItem ==>b)模型对象:仅普通对象.e POCO(普通旧CLR对象) 问题1)一般来说,有这样的模型更好。我的意思是我们只需要维护模型(a)吗 问题2)如果我们维持两个模型,有什么更好的方法。我们可以有一些关联或方法来生成模型对象(b) 问题3)如果我们有两个模型,通常遵循的名称约定是什么。 我把它命名为PersonUI,我的意思是有

==>a)UI模型对象:即我有属性更改通知的类(INotifyPropertyChanged),SelectedItemXXX绑定到某个组合框SelectedItem

==>b)模型对象:仅普通对象.e POCO(普通旧CLR对象)

问题1)一般来说,有这样的模型更好。我的意思是我们只需要维护模型(a)吗

问题2)如果我们维持两个模型,有什么更好的方法。我们可以有一些关联或方法来生成模型对象(b)

问题3)如果我们有两个模型,通常遵循的名称约定是什么。 我把它命名为PersonUI,我的意思是有更好的命名方式吗


谢谢

对问题1的回答:。您通常需要简单的模型对象来在UI模型领域之外执行现实世界的业务逻辑(也称为域逻辑)。遵循以下步骤,您不应该将UI模型对象与业务模型对象混为一谈

对问题2的回答:-一种非常常用的模式是:

  • M-表示模型(业务或域逻辑层)
  • 代表视图(在WPF和Silverlight中是XAML和代码隐藏)
  • VM表示ViewModel(或者用您的话来说是UI模型对象)
MVVM是WPF和SilverLight的推荐最佳实践。它将UI与模型分离,并允许更容易的测试和重用

问题3的答案:UI模型对象(A)的通用命名约定是使用
XXXXViewModel
。例如,如果您有一个名为
Giraffe.xaml
的WPF控件和相应的
Giraffe.xaml.cs
的代码隐藏文件,则视图模型文件的名称将是
GiraffeViewModel.cs
,类的外观如下:


公共类GiraffViewModel:INotifyPropertyChanged
{..


将模型对象的名称保留在包含在其中的逻辑中。例如:
GiraffeVision.cs

问题1的答案:。通常需要简单的模型对象来执行现实世界的业务逻辑(又称域逻辑)在您的UI模型领域之外。遵循,您不应该将UI模型对象与业务模型对象混为一谈

对问题2的回答:-一种非常常用的模式是:

  • M-表示模型(业务或域逻辑层)
  • 代表视图(在WPF和Silverlight中是XAML和代码隐藏)
  • VM表示ViewModel(或者用您的话来说是UI模型对象)
MVVM是WPF和SilverLight的推荐最佳实践。它将UI与模型分离,并允许更容易的测试和重用

问题3的答案:UI模型对象的通用命名约定(A)是要使用
XXXXViewModel
。例如,如果您有一个名为
Giraffe.xaml
的WPF控件和相应的
Giraffe.xaml.cs
的代码隐藏文件,那么视图模型文件的名称将是
GiraffeViewModel.cs
,类将类似于:


公共类GiraffViewModel:INotifyPropertyChanged
{..


将模型对象的名称保留为包含在其中的逻辑。例如:
GiraffeVision.cs

这是命名约定的问题。让我们有Employee Register视图和相应的视图模型,即EmployeeRegisterViewModel。现在EmployeeRegisterView需要某种类型的对象,需要绑定到指定的c UI控件可以说EmployeePersonal信息,需要在其中捕获SelectedItem。如果我将该对象命名为EmployeePersonalInfoViewModel,那么它将是一个很长的ViewModel列表,当我们要搜索MainViewModel(EmployeeRegisterViewModel)时会混淆处理某些类型的获取数据问题..例如GetData不起作用。在这种情况下,EmployeePersonalInformation对象将是EmployeeRegisterViewModel中的ObservableCollection属性。ObservableCollections是网格中使用的模型对象列表或模板,因此您可以在视图中显示其中的许多对象。请参阅-注意交易模型类位于中间。此域模型被放入一个ObservableCollection中,以便在TradesView中动态显示。在实际情况下,它不是一个集合对象。我只是给出了示例场景。我们需要维护非集合项的可绑定对象。它们类似于一对一。但我需要从UI co获取信息控件。此UI控件应绑定到某个对象(即INotifiable,SelectedXXX..),它实际上是ViewModel。但现在如果我将其命名为XXX\u ViewModel…搜索文件…查找MainViewModel(调用中间层和其他comamnds的实际逻辑)会让人很困惑。如果您的控件是可重用的,那么它们可以分解并编码在单独的XXX.xaml文件中,您还可以使用控制级别XXXXViewModel.cs文件来遵循命名约定。对于重用和测试来说,通常最好使用更小的可重用UI元素。请针对您的问题提出具体问题,我们可以提供更多信息具体的解决方案和答案。这是命名约定的问题。让我们有Employee Register视图和相应的视图模型,即EmployeeRegisterViewModel。现在EmployeeRegisterView需要某种类型的对象,需要绑定到特定的UI控件,比如EmployeePersonal信息,需要捕获SelectedItem.如果我将该对象命名为EmployeePersonalInfo视图模型,那么它将是一个很长的视图模型列表,当我们要搜索MainViewModel(EmployeeRegisterViewModel)以处理某种获取数据的问题时,这会使我们感到困惑..例如GetData不起作用。在这种情况下,您的EmployeePersonalInformation对象