如何在ObjectListView中创建一列复选框,就像单选按钮一样?

时间:2015-07-21 12:56:50

标签: c# winforms listview mvvm objectlistview

我使用的是ObjectListView,而且我有一点时间。不可否认,我在模型 - 视图结构中没有很多经验,而且最重要的是,ObjectListView页面的源forge页面已经关闭。

我有一个布尔列设置为OLV中的复选框,我希望它的行为类似于单选按钮。我的问题是我无法捕获OLV中复选框的点击事件。我的底层模型是一个File(类),它包含一个包含3个属性的Fields(class)列表。 Fields类的一个属性是此复选框。因此,据推测,该字段知道它何时被点击,但它不知道文件,它应该检查它是否有任何其他具有此属性集的字段。

有人能指出我正确的方向吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

这个怎么样?

olv.ItemChecked += delegate(object sender, ItemCheckedEventArgs e)
{
    var item = e.Item as OLVListItem;
    if (item != null && e.Item.Checked)
    {
        var objects = ObjectListView.EnumerableToArray(olv.Objects, true);
        objects.Remove(item.RowObject);
        olv.UncheckObjects(objects);
    }
}

答案 1 :(得分:0)

这是我想出的:

private void tlvFields_SubItemChecking(object sender, BrightIdeasSoftware.SubItemCheckingEventArgs e)
    {            
        foreach(var field in f.Fields)
        {
            if(field.PK)
            {
                field.PK = false;
            }
        }
        tlvFields.SetObjects(_files);
    }

我花了一些时间弄清楚如何弄乱视图下的模型。一旦我弄明白,这就容易了。