ViewModelをビューに接続する方法は2つあります。 1つはXAMLにあり、もう1つは依存関係の後ろにあるコードに依存しています。ViewModelをSilverlightのビューにフックアップ
どの方法がより好ましいですか?コードの中にコードを入れたくないので、私はxamlメソッドが好きですが、もう一方のコードに問題はありますか?
<navigation:Page x:Class="MyNamespace.MyViewModel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ViewModel="clr-namespace:MyNameSpace.MyViewModel"
xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
Title="ViewModel Page" >
<navigation:Page.Resources>
<ViewModel:MyViewModel x:Key="ViewModel"></ViewModel:MyViewModel>
</navigation:Page.Resources>
<Grid x:Name="LayoutRoot" Background="White"
DataContext="{StaticResource ViewModel}">
</Grid>
</navigation:Page>
OR
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Navigation;
namespace MyNamespace
{
public partial class MyView : Page
{
public MyView()
{
InitializeComponent(MyViewModel viewModel);
this.DataContext = viewModel;
}
}
}
Hmm ..リンクに感謝します。私は今それを読んでいる。私は何かを取得していないので、私はそれをもう一度読む必要があると思う。ショーン氏は、「これらの方法の両方で、私はビュー・モデルへのビューの粘着性が気に入らない傾向があります。また、これらは両方とも、通常のケースでは常にケースではない1対1の関係を示唆しています" View-Firstでは、多くのビューを1つのVMにデータバインドすることができます。 1つのビューを複数のVMにバインドできますか?うーん..もう一度、あなたのVが単純なグリッドであれば、別のVMにバインドさせたいかもしれないと思います。 –
これまでのところ、私はVとVMの間に1対1の関係を維持するファンです。それは私が階層に反対していることを意味しません。つまり、ビューにはそれぞれ独自のVMを持つサブビューが含まれている可能性があり、これはかなりうまく機能しているようです。 –
私たちのアプリケーションでは、データの行だけを表示する標準のグリッドビューがあります。そのデータは異なるViewModelからのものであるため、1対1にしておくことは意味がありません。含まれているデータを除き、すべて同じである場合、複数のグリッドビューを持つ必要はありません。 –