Avi*_*Avi 17 wpf user-controls mvvm caliburn.micro
我是新手WPF程序员.我正在尝试为我的代码添加一些结构:用户控件和MVVM.
在这里研究,我发现人们推荐Caliburn.Micro.另一方面,我在这里和其他地方发现了一些关于Caliburn.Micro在UserControls上玩得不好的投诉.
所以我的问题是:Caliburn.Micro能否很好地使用用户控件?
dev*_*tal 38
是的,Caliburn.Micro与用户控件很好地配合.这是一个固执己见的框架,但不是强迫你走特定的发展道路.如链接问题的答案所示,如果您有任何特定问题,可以始终使用普通的旧WPF绑定.
事实上,我不会让这两个链接完全阻止你,第一个是描述将单独的属性绑定到单个用户控件的方法,并且解决方案是有效的.一个更好的解决方案可能是使用ItemsControl自定义DataTemplate,然后在他的视图模型上创建一个包含属性名称和值的DTO集合.
第二个链接是说明如何创建一个view(UserControl)并在XAML中创建一个视图实例,并且你希望将它绑定到一个视图模型,然后首先调用view,你必须告诉Caliburn.Micro在哪里视图模型将绑定到:
<UserControl ...
cal:Bind.Model="EasyPlayer.MediaControl.NowPlayingViewModel" />
Run Code Online (Sandbox Code Playgroud)
因此,这在概念上可以被视为视图模型/视图,而不是具有依赖属性等的UserControl.
事实上,你会发现当你使用Caliburn.Micro时,你可能会使用越来越少的UserControls来执行视图合成.这是因为使用视图模型,视图和视图模型第一种方法创建可重用的UI部件非常容易.
当您ContentControl在父视图模型中具有与视图模型属性相同的视图中时,Caliburn.Micro将找到相应视图模型的视图,将其注入到ContentControl视图/视图模型中,并绑定视图/视图模型.
例如:
public class MyParentViewModel : Screen
{
public MenuViewModel MenuViewModel { get; set; }
public DetailsViewModel DetailsViewModel { get; set; }
public MyParentViewModel()
{
this.MenuViewModel = new MenuViewModel();
this.DetailsViewModel = new DetailsViewModel();
}
}
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width=".2*" />
<ColumnDefinition Width=".8*" />
</Grid.ColumnDefinitions>
<ContentControl Grid.Column="0" x:Name="MenuViewModel" />
<ContentControl Grid.Column="1" x:Name="DetailsViewModel" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10599 次 |
| 最近记录: |