在View构造函数的'MachineLayoutView' does not contain a definition for 'WhenActivated' and the best extension method overload 'ViewForMixins.WhenActivated(ISupportsActivation, Func<IEnumerable<IDisposable>>)' requires a receiver of type 'ISupportsActivation'
行上出现以下错误this.WhenActivated
据我所知,我正确地遵循了Getting Started。
注意:我使用的是WPF,我的ViewModels位于Views Project引用的单独的程序集/项目中。 (不确定是否重要)
查看
using RAL.RealTime.ViewModel;
using ReactiveUI;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace RAL.RealTime
{
/// <summary>
/// Interaction logic for MachineLayoutView.xaml
/// </summary>
public partial class MachineLayoutView : ReactiveUserControl<MachineLayoutViewModel>
{
public MachineLayoutView()
{
InitializeComponent();
this.WhenActivated(disposableRegistration =>
{
this.OneWayBind(this.ViewModel,
viewModel => viewModel.MachineStatuses,
view => view.MachineStatuses)
.DisposeWith(disposableRegistration);
});
}
}
}
ViewModel
using RAL.Repository;
using ReactiveUI;
using System;
using System.Collections.Generic;
using System.Text;
namespace RAL.RealTime.ViewModel
{
public class MachineLayoutViewModel : ReactiveObject
{
private ObservableAsPropertyHelper<IEnumerable<MachineStatusViewModel>> _machineStatuses { get; set; }
public IEnumerable<MachineStatusViewModel> MachineStatuses => _machineStatuses.Value;
}
}
编辑:
根据Glenn Watson的建议,我尝试了以下操作,没有任何改变。
public MachineLayoutView()
{
InitializeComponent();
this.WhenActivated(disposableRegistration =>
{
disposable(this.OneWayBind(ViewModel,
viewModel => viewModel.MachineStatuses,
view => view.MachineStatuses));
});
}
答案 0 :(得分:0)
这是编译时还是运行时错误?如果是编译时间。确保XAML(假设存在XAML)具有正确的名称空间,并且视图控件与中的继承类型相同。即 var case_list = (from c in sc.IncidentSet
//join d in sc.ActivityPointerSet on c.Title equals d.Subject
where c.CreatedOn < edatetime && c.CreatedOn >= sdatetime
&& (c.CaseOriginCode == null || c.CaseOriginCode.Value == 1)
&& c.skr_casetype != null
&& (c.skr_casetype.Value == 0 || c.skr_casetype.Value == 3 || c.skr_casetype.Value == 1)
&& (c.skr_ServiceRequest == null
|| c.skr_ServiceRequest.Value == 3 || c.skr_ServiceRequest.Value == 8
|| c.skr_ServiceRequest.Value == 6 || c.skr_ServiceRequest.Value == 7)
&& c.OwningUser.Id != dp
orderby c.CreatedOn descending
select c).AsEnumerable().ToArray();
var regardReception = reception.Where(r => r.RegardingObjectId != null).AsEnumerable();
var regardIncident = (from c in case_list
join d in regardReception on c.Id equals d.RegardingObjectId.Id
// join f in sc.ActivityPointerSet on d.RegardingObjectId.Id equals f.ActivityId
orderby c.skr_createdon.Value descending
select c).AsEnumerable().Distinct();
foreach (var bb in regardIncident)
{
var appointment = (from c in sc.AppointmentSet
//join f in sc.ActivityPointerSet on c.Id equals f.ActivityId
where c.RegardingObjectId.Id == bb.Id
select new
{
c.StatusCode,
c.Subject,
c.RegardingObjectId
}).AsEnumerable().FirstOrDefault();
if (appointment == null)
{
var result = bb.StatusCode;
if (result != null)
{
list.Add(bb);
}
}
else
{
list.Add(bb);
}
ViewBag.list = list;
}
var regardIncidentCnt = regardIncident.Count();
ViewBag.cnt = regardIncidentCnt;
}
return View();
}
应该在XAML脚本中读为UserControl
。
从入门入手:
ReactiveUserControl