【问题标题】:How can I make a column of check boxes in the ObjectListView behave like radio buttons?如何使 ObjectListView 中的一列复选框表现得像单选按钮?
【发布时间】:2015-07-21 12:56:50
【问题描述】:

我正在使用 ObjectListView,而且我玩得很开心。诚然,我在 Model-View 结构中做事的经验并不多,最重要的是,ObjectListView 页面的源伪造页面已关闭。

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

谁能指出我正确的方向?

谢谢。

【问题讨论】:

  • 到底是一个ObjectListView?这是 wpf 还是别的什么?
  • 我意识到我实际上需要查看 SubItemChecking 事件。

标签: c# winforms listview mvvm objectlistview


【解决方案1】:

这个怎么样?

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);
    }
}

【讨论】:

    【解决方案2】:

    这是我想出的:

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

    我花了一段时间才弄清楚如何弄乱视图下的模型。一旦我想通了,这就更容易了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-17
      • 1970-01-01
      • 2022-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      相关资源
      最近更新 更多