相关疑难解决方法(0)

Wpf UserControl和MVVM

我正在考虑为我的应用程序编写WPF用户控件.我在我的应用程序中使用MVVM.

用户控件可能需要可以设置为父视图的依赖项属性.当使用MVVM时,想法是父视图最终将在UserControlsDP与父视图的VM 之间创建绑定)

Dependency Properties需要在View类中创建,因为VM不会继承DependencyObject.这意味着在XAML代码中添加代码.

我想知道你是否可以就使用MVVM开发WPF应用程序时如何设计用户控件提出建议......

.net wpf user-controls dependency-properties mvvm

23
推荐指数
2
解决办法
3万
查看次数

WPF用户控制地狱与MVVM和依赖属性

这就是我想要做的:

  • 我写的UserControl是我希望被其他开发者消费的.
  • 我希望最终用户能够使用依赖属性来使用我的控件.

    <lib:ControlView ControlsText={Binding Path=UsersOwnViewModelText} />
    
    Run Code Online (Sandbox Code Playgroud)
  • 我正在使用MVVM模式.

  • 我将我的ViewModels绑定到他们的View使用 <DataTemplates>

    <DataTemplate DataType="{x:Type local:ControlViewModel}">  
        <local:ControlView />  
    </DataTemplate>
    
    Run Code Online (Sandbox Code Playgroud)

所以我有两个问题:

  1. 我是否认为如果在XAML中使用UserControl,那么UserControl必须将ViewModel设置为DataContext控件Loaded事件触发时的方式而不是使用<DataTemplate>方法?

  2. 如何允许用户将数据绑定到我的控件的依赖项属性,同时仍然是绑定到我的ViewModel的数据?

wpf user-controls dependency-properties mvvm

15
推荐指数
2
解决办法
3万
查看次数

MVVM - 用户控制相互通信的理想方式是什么

我有一个用户控件,其中包含其他几个用户控件.我正在使用MVVM.每个用户控件都有一个相应的VM.这些用户控件如何相互发送信息?我想避免在后面的xaml代码中编写任何代码.特别是我对控件(主用户控件内部)如何相互通信以及如何与容器用户控件进行通信感兴趣.

编辑:我知道使用事件代表将帮助我解决这个问题.但是,我想避免在xaml代码隐藏中编写任何代码.

c# wpf user-controls mvvm

14
推荐指数
3
解决办法
9005
查看次数

我应该将UserControl用于我的视图而不是DataTemplates吗?

我正在阅读这篇文章,作者提出了使用DataTemplates定义ViewModel的建议,这是一种疯狂的方式(#7).我一直这样做,真的那么糟糕吗?

<DataTemplate DataType="{x:Type local:MyViewModel}">
    <Grid>
        ...
    </Grid>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

我的大多数视图都只是一个定义一个或两个DataTemplate的ResourceDictionary.对我而言,这比为每个ViewModel创建UserControl更有意义.为什么我不想在WPF的可视化树中使用额外的图层?当DataTemplate为我做这件事时,为什么我要照顾将ViewModels映射到Views?这种语法真的是一种"疯子式"吗?

wpf user-controls view datatemplate mvvm

12
推荐指数
1
解决办法
2262
查看次数

我什么时候应该使用UserControl而不是Page?

我注意到许多WPF MVVM框架似乎避免使用NavigationWindow和Page控件来支持使用嵌套UserControls组合页面.

NavigationWindow和Page提供了在日志中启用后退和前进导航的简便方法,以及提供在页面之间传递数据的简便方法.我见过的大多数MVVM框架都以各种方式重新实现这些功能.

是否有特定的理由避免使用NavigationWindow和Page?

wpf user-controls mvvm

8
推荐指数
1
解决办法
6374
查看次数