相关疑难解决方法(0)

创建(创建)可重用的动态视图

Out团队希望创建可重用,可管理的视图.例如,我们希望在不同的应用程序中重用CommonPromptView(我们自己的,可自定义的对话框,我们可以隐藏"取消"按钮,设置标题,显示特定图标等).

该视图在其表面上有几个元素:TextBlocks,Buttons.我们想让它们成为一种风格.

那么,解决这个任务的最佳方法是什么?

  1. 视图可以是Window类型.
  2. 视图可以是UserControl类型.

在第一种情况下,可以通过两种方式支持样式:

  1. 元素样式引用了DynamicResources.
  2. 样式将传递给View的构造函数.

两者都不干净(在我看来).

但是如果View是UserControl,那么每次创建新app的人都必须创建一个新窗口来包含UserControl并将其绑定到DP(Style类型)正确.此外,如果UserControl拥有它自己非常方便的API(最常用操作的静态方法),对于包含UserControl的Window用户来说,这将丢失.

Update

CommonPromptView作为UserControl实现的示例.

Code-behind

 public sealed partial class CommonPromptView {
    private const int CloseViewTimeIntervalInMilliseconds = 120000;
    private DispatcherTimer timer;

    public static readonly DependencyProperty CommonPromptBorderStyleProperty = DependencyProperty.Register(
        "CommonPromptBorderStyle", typeof (Style), typeof (CommonPromptView), new PropertyMetadata(default(Style)));

    public Style CommonPromptBorderStyle {
        get { return (Style) GetValue(CommonPromptBorderStyleProperty); }
        set { SetValue(CommonPromptBorderStyleProperty, value); }
    }

    public static readonly DependencyProperty CommonPromptHeaderStyleProperty = DependencyProperty.Register(
        "CommonPromptHeaderStyle", typeof (Style), typeof (CommonPromptView), new PropertyMetadata(default(Style)));

    public Style CommonPromptHeaderStyle {
        get …
Run Code Online (Sandbox Code Playgroud)

wpf xaml wpf-controls wpf-4.0

9
推荐指数
1
解决办法
1216
查看次数

一个用于UserControl和Window的ViewModel或单独的ViewModel

我有MainWindowAddEdit UserControl.在里面MainWindow我渲染这个AddEdit <Views:AddEditData />,之前这个命名空间被添加到Window元素:

xmlns:Views="clr-namespace:MyProject.WPF.Views"

+++++++++++++++ ++++++++++++++++
ListOfData    + + DataDetails  +
              + +              +
   DataOne    + + Name: txtBox1+
   DataTwo    + +              +
   DataThree  + +              +
              + +  Save data   +
+++++++++++++++ ++++++++++++++++
Run Code Online (Sandbox Code Playgroud)

当用户选择左侧的数据时(例如DataTwo)我想在AddEdit用户控件(DataDetails面板)中显示它的属性(为简单起见,只有Name属性).

由于这UserControl是与MainWindow分开存储的,我应该使用相同的MainWindowViewModel和相同的datacontext,还是应该为AddEdit创建单独的ViewModel UserControl

希望这听起来很清楚,如果不是,请询问详细信息.

.net c# wpf mvvm

5
推荐指数
1
解决办法
2582
查看次数

标签 统计

wpf ×2

.net ×1

c# ×1

mvvm ×1

wpf-4.0 ×1

wpf-controls ×1

xaml ×1