PrismでMVVMを使用するSilverlightプロジェクトがあります。
http://www.telerik.com/help/silverlight/patterns-and-practices-eventtocommand-prism.htmlをフォローしました
グリッド内の行を選択すると、デバッガーが、Detailオブジェクトを設定した期待されるメソッド(SelectPerson)にヒットします。ただし、詳細オブジェクト(PersonDetail)のバインディング式が間違っていると思います。
これが私のViewModelです:
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Collections.ObjectModel;
using Telerik.Windows.Controls;
using Telerik.Windows.Controls.GridView;
namespace RadControlsSilverlight
{
public class PersonViewModel
{
public ObservableCollection<PersonInfo> GridItems { get; set; }
public PersonInfo PersonDetail { get; set; }
public DelegateCommand SelectPersonCommand { get; set; }
public PersonViewModel()
{
SetupData();
SelectPersonCommand = new DelegateCommand(SelectPerson);
}
public void SelectPerson(object obj)
{
Telerik.Windows.Controls.SelectionChangeEventArgs e = obj as Telerik.Windows.Controls.SelectionChangeEventArgs;
PersonInfo person = (PersonInfo)e.AddedItems[0];
PersonDetail = person;
}
public void SetupData()
{
Random rnd = new Random();
GridItems = new ObservableCollection<PersonInfo>();
for (int i = 0; i < 100; i++)
{
PersonInfo edi = new PersonInfo();
edi.ID = i;
edi.Name = "Name " + i.ToString();
edi.Date = DateTime.Today.AddDays(i);
edi.IsAvailable = (i % 3 == 0 ? true : false);
GridItems.Add(edi);
}
}
}
}
これがビューです
<UserControl x:Class="RadControlsSilverlight.PersonList"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:prismcommands="clr-namespace:RadControlsSilverlight.PrismCommands"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns:local="clr-namespace:RadControlsSilverlight"
d:DesignHeight="300" d:DesignWidth="400">
<UserControl.Resources>
<local:PersonViewModel x:Key="xVM" />
</UserControl.Resources>
<Grid x:Name="LayoutRoot"
Background="White"
DataContext="{StaticResource xVM}">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<telerik:RadGridView x:Name="xRadGridView"
ItemsSource="{Binding GridItems, Mode=TwoWay}"
prismcommands:SelectionChangedCommand.Command="{Binding SelectPersonCommand}"
>
</telerik:RadGridView>
<telerik:RadDataForm x:Name="DataForm1"
Grid.Column="1"
CurrentItem="{Binding PersonDetail, Mode=TwoWay}"
Header="Person Detail"/>
</Grid>
</UserControl>
選択された単一のPersonInfoオブジェクトをDataFormに表示するには、何を変更する必要がありますか?