我该如何初始化IList

时间:2014-04-24 14:33:26

标签: c# xaml

所以我的数据网格填充了一个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))

5 个答案:

答案 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();