【问题标题】:searching a particular setter programmatically以编程方式搜索特定的 setter
【发布时间】:2012-02-09 11:15:37
【问题描述】:

是否可以搜索特定的 setter,而不是遍历集合并执行类似的操作。

  foreach (Setter setter in dataRecord.Cells[i].Field.Settings.EditorStyle.Setters)
  {
    if (setter.Property.Name == "Format")
    {
      excelWorkSheetRow.Cells[i + level].CellFormat.FormatString = setter.Value.ToString();
      break;
    }
  }

【问题讨论】:

    标签: c# .net wpf styles


    【解决方案1】:

    SetterBaseCollection 不提供除从 Collection 继承的方法之外的任何方法。您可以使用 FindFirstOrDefault 扩展方法来检索您想要的设置器,如下所示:

    var formatSetter=dataRecord.Cells[i].EditorStyle.Setters.OfType<Setter>()
        .FirstOrDefault(setter=>setter.Property.Name == "Format");
    if (formatSetter!=null)
    ...
    

    诀窍在于 SetterBaseCollection 可以同时包含 Setter 和 EventSetter 对象。只有 Setter 对象具有 Property ... 属性,因此您需要 OfType 仅搜索 Setter 对象。如果有人在样式中添加了事件设置器,您的代码就会中断。

    【讨论】:

      【解决方案2】:

      如果你的对象支持 IEnumerable 接口,你可以使用 Where() 方法。

      查看以下MSDN article 示例

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-08
        • 1970-01-01
        • 1970-01-01
        • 2015-02-16
        • 1970-01-01
        • 2022-12-18
        • 1970-01-01
        相关资源
        最近更新 更多