标签: mvvm

如何使用DataContext属性在XAML中的窗口上设置ViewModel?

这个问题几乎说明了一切.

我有一个窗口,并尝试使用完整的命名空间将DataContext设置为ViewModel,但我似乎做错了.

<Window x:Class="BuildAssistantUI.BuildAssistantWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    DataContext="BuildAssistantUI.ViewModels.MainViewModel">
Run Code Online (Sandbox Code Playgroud)

.net wpf xaml mvvm

90
推荐指数
4
解决办法
13万
查看次数

如何使用jquery-mobile和knockoutjs构建webapp

我想构建一个移动应用程序,除了html/css和JavaScript之外别无其他.虽然我对如何使用JavaScript构建Web应用程序有很好的了解,但我想我可能会看一下像jquery-mobile这样的框架.

起初,我认为jquery-mobile仅仅是针对移动浏览器的小部件框架.与jquery-ui非常相似,但对于移动世界而言.但我注意到jquery-mobile不止于此.它带有一堆架构,让你用声明性的html语法创建应用程序.因此,对于最容易思考的应用程序,您不需要自己编写一行JavaScript(这很酷,因为我们都喜欢少工作,不是吗?)

为了支持使用声明性html语法创建应用程序的方法,我认为将jquery-mobile与knockoutjs结合起来是一个很好的选择.Knockoutjs是一个客户端MVVM框架,旨在将WPVM/Silverlight中的MVVM超级功能引入JavaScript世界.

对我来说MVVM是一个新世界.虽然我已经阅读了很多关于它的内容,但我以前从未真正使用它.

所以这篇文章是关于如何使用jquery-mobile和knockoutjs一起构建应用程序.我的想法是写下我看了几个小时后想出来的方法,并有一些jquery-mobile/knockout yoda来评论它,告诉我为什么它糟透了,为什么我不应该在第一次编程地方;-)

HTML

jquery-mobile在提供页面的基本结构模型方面做得很好.虽然我很清楚我之后可以通过ajax加载我的页面,但我决定将它们全部保存在一个index.html文件中.在这个基本场景中,我们谈论的是两个页面,因此不应该太难以掌握一切.

<!DOCTYPE html> 
<html> 
  <head> 
  <title>Page Title</title> 
  <link rel="stylesheet" href="libs/jquery-mobile/jquery.mobile-1.0a4.1.css" />
  <link rel="stylesheet" href="app/base/css/base.css" />
  <script src="libs/jquery/jquery-1.5.0.min.js"></script>
  <script src="libs/knockout/knockout-1.2.0.js"></script>
  <script src="libs/knockout/knockout-bindings-jqm.js" type="text/javascript"></script>
  <script src="libs/rx/rx.js" type="text/javascript"></script>
  <script src="app/App.js"></script>
  <script src="app/App.ViewModels.HomeScreenViewModel.js"></script>
  <script src="app/App.MockedStatisticsService.js"></script>
  <script src="libs/jquery-mobile/jquery.mobile-1.0a4.1.js"></script>  
</head> 
<body> 

<!-- Start of first page -->
<div data-role="page" id="home">

    <div data-role="header">
        <h1>Demo App</h1>
    </div><!-- /header -->

    <div data-role="content">   

    <div class="ui-grid-a">
        <div class="ui-block-a">
            <div class="ui-bar" style="height:120px">
                <h1>Tours today (please wait 10 seconds to see the effect)</h1>
                <p><span data-bind="text: toursTotal"></span> …
Run Code Online (Sandbox Code Playgroud)

mvvm jquery-mobile knockout.js

88
推荐指数
1
解决办法
2万
查看次数

从ViewModel关闭窗口

我使用a创建一个登录,window control以允许用户登录WPF我正在创建的应用程序.

到目前为止,我已经创建了一种方法,用于检查用户是否已输入正确的凭据,usernamepasswordtextbox登录屏幕上输入binding两个properties.

我通过创建一个bool方法来实现这一点,就像这样;

public bool CheckLogin()
{
    var user = context.Users.Where(i => i.Username == this.Username).SingleOrDefault();

    if (user == null)
    {
        MessageBox.Show("Unable to Login, incorrect credentials.");
        return false;
    }
    else if (this.Username == user.Username || this.Password.ToString() == user.Password)
    {
        MessageBox.Show("Welcome " + user.Username + ", you have successfully logged in.");

        return true;
    }
    else
    {
        MessageBox.Show("Unable to Login, incorrect credentials.");
        return false;
    }
} …
Run Code Online (Sandbox Code Playgroud)

c# wpf mvvm

81
推荐指数
8
解决办法
10万
查看次数

我应该绑定到ICollectionView或ObservableCollection

应该绑DataGrid一个

ICollectionView = CollectionViewSource.GetDefaultView(collection)

或者

ObservableCollection<T> collection; ???

MVVM的最佳实践是什么?为什么?

.net c# data-binding wpf mvvm

79
推荐指数
4
解决办法
4万
查看次数

MVVM的基本概念 - ViewModel应该做什么?

为了掌握MVVM的概念,我已经阅读了几个博客并查看了一些项目.

根据我的理解,一个视图是愚蠢的,它只知道如何呈现传递给它的东西.

模型只是普通数据,而ViewModel就像两者之间的填充,它应该从模型中获取信息并将其传递给View,View应该知道如何呈现它.或者反过来说,如果视图中的信息发生变化,它应该将更改传递给模型.

但我仍然不知道如何应用这个概念.有人可以解释一个非常简单的场景,以便我能掌握这个概念吗?我已经看过几个项目,但它仍然没有完全合理,所以如果有人能用简单的英语写出来,那就太好了.

mvvm

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

在敲除js绑定的同时构建隐藏屏幕的最佳方法是什么?

我是一个巨大的淘汰赛粉丝.我现在用它来进行我的所有网络开发,只是喜欢它.我无法弄清楚的一件事是如何在构建knockoutjs绑定时隐藏UI.

例如,我有一个非常强大的用户界面,我的页面上使用了很多模板.我注意到的问题是,当用户第一次访问页面时,他们会在绑定启动之前看到我的所有模板,并隐藏它们.

解决此问题的最佳方法是什么?我已经尝试使用辅助类来隐藏它们,但是除非我删除了辅助类引用(即ui-helper-hidden),否则模板不能使用'visible'和'if'绑定显示.

javascript mvvm knockout.js

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

MVVM路由和中继命令

什么是之间的差异的RoutedCommandRelayCommand?何时使用RoutedCommand以及何时在MVVM模式中使用RelayCommand?

command mvvm relaycommand routedcommand

75
推荐指数
4
解决办法
5万
查看次数

WPF MVVM为什么使用ContentControl + DataTemplate Views而不是直接的XAML窗口视图?

我有一个关于WPF MVVM的问题,这让我感到沮丧.

为什么这样做:?

MainWindow.xaml:

<Window x:Class="MVVMProject.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
        <ContentControl Content="{Binding}"/>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

将您的ExampleView.xaml设置为:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:vms="clr-namespace:MVVMProject.ViewModels">
    <DataTemplate DataType="{x:Type vms:ExampleVM}" >
        <Grid>
            <ActualContent/>
        </Grid>
    </DataTemplate>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)

并创建如下窗口:

public partial class App : Application {

    protected override void OnStartup(StartupEventArgs e) {

        base.OnStartup(e);

        MainWindow app = new MainWindow();
        ExampleVM context = new ExampleVM();
        app.DataContext = context;
        app.Show();
    }
}
Run Code Online (Sandbox Code Playgroud)

什么时候可以这样做:?

App.xaml :(设置启动窗口/视图)

<Application x:Class="MVVMProject.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    StartupUri="ExampleView.xaml">
</Application>
Run Code Online (Sandbox Code Playgroud)

ExampleView.xaml :(窗口不是ResourceDictionary)

<Window x:Class="MVVMProject.ExampleView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:vms="clr-namespace:MVVMProject.ViewModels">
    >
    <Window.DataContext>
        <vms:ExampleVM />
    </Window.DataContext>

    <Grid> …
Run Code Online (Sandbox Code Playgroud)

c# architecture wpf xaml mvvm

75
推荐指数
3
解决办法
8万
查看次数

如何使用Knockout.js将项添加/插入到某个位置的ObservableArray中

我发现的所有淘汰示例似乎都使用以下内容在ObservableArray的末尾添加了一个新项:

viewModel.SomeItems.push(someNewItem);
Run Code Online (Sandbox Code Playgroud)

这当然将项目放在数组的末尾.

如何在特定位置向ObservableArray添加项?

例如.就像是:

viewModel.SomeItems.push(someNewItem, indexToInsertItAt);
Run Code Online (Sandbox Code Playgroud)

javascript mvvm knockout.js

73
推荐指数
3
解决办法
4万
查看次数

Android ViewModel附加参数

有没有办法将其他参数传递给我的自定义AndroidViewModel构造函数,除了Application上下文.例:

public class MyViewModel extends AndroidViewModel {
    private final LiveData<List<MyObject>> myObjectList;
    private AppDatabase appDatabase;

    public MyViewModel(Application application, String param) {
        super(application);
        appDatabase = AppDatabase.getDatabase(this.getApplication());

        myObjectList = appDatabase.myOjectModel().getMyObjectByParam(param);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我想要使用我的自定义ViewModel类时,我在我的片段中使用此代码:

MyViewModel myViewModel = ViewModelProvider.of(this).get(MyViewModel.class)
Run Code Online (Sandbox Code Playgroud)

所以我不知道如何将额外的参数传递String param给我的自定义ViewModel.我只能传递Application上下文,但不能传递其他参数.我真的很感激任何帮助.谢谢.

编辑:我添加了一些代码.我希望现在好多了.

android mvvm viewmodel

72
推荐指数
5
解决办法
2万
查看次数