所以我的数据网格填充了一个Ilist
public IList SelectedItem2 { get; set; }
我有一个双击动作,我想与在零指数处选择的行值进行交互。
<telerik:RadGridView SelectedItem="{Binding SelectedItem2}" ItemsSource="{Binding AllQueries, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="True">
<telerik:RadGridView.RowStyle>
<Style TargetType="telerik:GridViewRow">
<Setter Property="cal:Message.Attach" Value="[Event MouseDoubleClick] = [Open2()]"/>
</Style>
</telerik:RadGridView.RowStyle>
</telerik:RadGridView>
当我双击该行时会产生此错误。
错误产生Object reference not set to an instance of an object.
我想知道如何修复此错误,通常在ViewModel中我会做类似的事情
SelectedItem2 = new IList();
但是没有这样的事情:s
在Open2中
Interaction i;
IRecord vm;
using (var ctx = DB.Get()) i = ctx.Interactions.Find(SelectedItem2.IndexOf(0))
答案 0 :(得分:5)
您无法初始化界面。您需要创建一个实现该接口的对象:
SelectedItem2 = new ArrayList();
或者
SelectedItem2 = new List(of object);
如果您的所有值都是相同的类型,我宁愿使用类型:
IList(Of string) SelectedItem2;
SelectedItem2 = new List(of string);
答案 1 :(得分:2)
您需要使用实现 IList
的类,例如List<T>
(其中T
是列表可以包含的对象类型)或{{ 1}}
答案 2 :(得分:0)
IList是一个界面。您无法实例化接口。使用IList
的具体实现(例如SelectedItem2 = new List()
,而不是IList
)。
答案 3 :(得分:0)
Ilist是一个应该使用list来实例化的接口。
SelectedItem2 = new List();
答案 4 :(得分:0)
检查此链接http://social.msdn.microsoft.com/Forums/en-US/a30c4f18-eb14-4aa9-948f-701bb04b591e/list-initialization。您无法初始化界面。所以你会这样做:
SelectedItem2 = new List();