私は自分が間違っていることを理解していないだけです。WPF アプリ (4.5) で Caliburn Micro を使用しようとしています。価値のあるMVVMをフォローしようとしています。
私の VM には、サービスと承認のプロパティがあります。Authorization には SelectedService のプロパティがあります。コントロールに名前を付けx:Name=Services
ました。Services プロパティを入力すると、RadGridView に表示されますが、RadGridView で項目を選択するSelectedItem
と、SelectedService
プロパティにバインドされません。Services プロパティが 1 つのレベルにあり、SelectedService
が 1 つ下のレベルにあるためAuthorizations.SelectedService
でしょうか?
以下は、投稿をあふれさせずにあえて投稿したコードのほとんどです。うまくいけば、それで十分です。
私は、Caliburn Micro と MVVM 全般を「取得」することに非常に近づいているように感じます....
public class Authorization:BindableBase
{
public int ID
{
get { return this.id; }
set
{
this.id = value;
this.OnPropertyChanged();
}
}
public Service SelectedService
{
get { return this.selectedService; }
set
{
this.selectedService = value;
OnPropertyChanged();
}
}
public Member ActiveMember
{
get { return this.activeMember; }
set
{
this.activeMember = value;
this.OnPropertyChanged();
}
}
}
次に、CreateAuthViewModel にはそのモデルと、サービスと呼ばれる可能な選択肢を設定するためのプロパティがあります。
[Export(typeof(IScreen))]
public class CreateAuthViewModel : Screen, IHandle<MessageNotifier>
{
public Authorization Authorization
{
get { return this.authorization; }
set
{
this.authorization = value;
NotifyOfPropertyChange();
}
}
public BindableCollection<Service> Services
{
get { return services; }
set
{
services = value;
NotifyOfPropertyChange();
}
}
最後に、私のビュー、CreateAuthView:
<UserControl x:Name="CreateAuthUserControl"
x:Class="Green.Views.CreateAuthView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns:cal="http://www.caliburnproject.org">
<telerik:RadExpander>
<StackPanel>
<telerik:RadGridView x:Name="Services"
IsReadOnly="True"
SelectionMode="Extended"
ScrollViewer.CanContentScroll="True" />
<telerik:RadDataPager x:Name="ServicesDataPager"
PageSize="10"
VerticalAlignment="Bottom"
Source="{Binding Items, ElementName=Services}" />
</StackPanel>
</telerik:RadExpander>
</UserControl>