C# Caliburn微问题的深层属性绑定

C# Caliburn微问题的深层属性绑定,c#,wpf,data-binding,mvvm,caliburn.micro,C#,Wpf,Data Binding,Mvvm,Caliburn.micro,我只是不知道我做错了什么。我正在尝试在WPF应用程序(4.5)上使用Caliburn Micro。尝试跟随MVVM的价值 我的虚拟机具有服务和授权的属性。授权具有SelectedService的属性。我已将我的控件命名为x:Name=Services,当我填充服务属性时,它们会显示在RadGridView中,但当您在RadGridView中选择一项时,它不会将SelectedItem绑定回我的SelectedService属性。这是因为服务属性处于一个级别,而SelectedService是更深

我只是不知道我做错了什么。我正在尝试在WPF应用程序(4.5)上使用Caliburn Micro。尝试跟随MVVM的价值

我的虚拟机具有服务和授权的属性。授权具有SelectedService的属性。我已将我的控件命名为
x:Name=Services
,当我填充服务属性时,它们会显示在RadGridView中,但当您在RadGridView中选择一项时,它不会将
SelectedItem
绑定回我的
SelectedService
属性。这是因为服务属性处于一个级别,而
SelectedService
是更深的一个级别,
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();
        }
    }
[导出(typeof(IScreen))]
公共类CreateAuthViewModel:Screen,IHandle
{     
公开授权
{
获取{返回this.authorization;}
设置
{
这个。授权=值;
NotifyOfPropertyChange();
}
}
公共收费服务
{
获取{return services;}
设置
{
服务=价值;
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>


没有现成的Telerik约定,因为这需要对Telerik控件的依赖性。您可以查看自己编写的,或者使用可用的项目。

没有现成的Telerik约定,因为这需要对Telerik控件的依赖性。您可以查看writ您可以自己创建,或者使用可用作的项目。

在您的视图中,您的Authorization\u SelectedService named control在哪里?视图中没有。我曾认为,使用Combobox和Datagrid,约定是将
x:Name
绑定到VM上itemsource的匹配属性,并查找pro虚拟机上名为“选定、活动或单个”的权限与第一个属性同名。这就是我试图让它做的。它从不将Datagrid的SelectedItem设置为我的
授权。SelectedItem
属性。什么Datagrid?你有一个RadGridView和一个RadDataPager。我在视图中看不到任何其他内容。对不起,说错了,我是指RadGridView。你的视图在哪里您的授权\u SelectedService命名为control?视图中没有。我曾认为,使用Combobox和Datagrid,约定是将
x:Name
绑定到itemsource虚拟机上的匹配属性,并在虚拟机上查找名为“Selected、Active或Single”的属性与第一个属性同名。这就是我试图让它做的。它从不将Datagrid的SelectedItem设置为我的
授权。SelectedItem
属性。什么Datagrid?你有一个RadGridView和一个RadDataPager。我在视图中看不到任何其他内容。对不起,口误,我是指RadGridView。对不起,我应该这样做我使用的是Caliburn.Micro.Telerik约定。它对RadGridView有约定,但似乎不起作用。这并不是很多事情。你真的填充了服务属性吗?你的网格视图中有没有空白的项?调试时输出窗口中有没有绑定错误g?你的问题提到了x:Name=Authorization\u SelectedService,但这在你的视图中看不到。对不起,我会尽量更清楚。我会直接编辑我的帖子。非常感谢你试图帮助我。我很抱歉,我本应该更清楚。我使用的是Caliburn.Micro.Telerik约定。它有RadGridView bu的约定它似乎不起作用。这并不是很多。你真的填充了服务属性吗?你的网格视图中是否有空白项?在调试时,你的输出窗口中是否有任何绑定错误?你的问题提到了x:Name=Authorization\u SelectedService,但这在你的视图中看不到。对不起,我会尽量说得更清楚。我会直接编辑我的帖子。非常感谢你对我的帮助。