【问题标题】:Get radiobuttons of group in Silverlight 3在 Silverlight 3 中获取组的单选按钮
【发布时间】:2010-01-08 01:30:45
【问题描述】:

我有一个 Silverlight 3 应用程序,它具有使用 GroupName 属性分组的单选按钮。我想在代码中做的是检索属于指定组的所有单选按钮。有没有一种简单的方法可以做到这一点,还是我需要遍历所有控件?

谢谢。

【问题讨论】:

    标签: silverlight


    【解决方案1】:

    answer 借用(再次)我的 VisualTreeEnumeration(我真的很需要写博客):-

    public static class VisualTreeEnumeration 
    { 
       public static IEnumerable<DependencyObject> Descendents(this DependencyObject root) 
       { 
         int count = VisualTreeHelper.GetChildrenCount(root); 
         for (int i=0; i < count; i++) 
         { 
           var child = VisualTreeHelper.GetChild(root, i); 
           yield return child; 
           foreach (var descendent in Descendents(child)) 
             yield return descendent; 
         } 
       } 
    } 
    

    将其放置在您的主命名空间或实用程序命名空间中的文件中,并在您的代码中放置 using

    现在您可以使用 LINQ 获取各种有用的列表。在你的情况下:-

     List<RadioButton> group = this.Descendents()
                                   .OfType<RadioButton>()
                                   .Where(r => r.GroupName == "MyGroupName")
                                   .ToList();
    

    【讨论】:

      【解决方案2】:

      这可能会有所帮助: 基本上遍历控件以查找所需组中的单选按钮。 这也将查看所有子面板。

      private List<FrameworkElement> FindBindings(DependencyObject visual, string group)
      {
          var results = new List<FrameworkElement>();
      
          for (int i = 0; i < VisualTreeHelper.GetChildrenCount(visual); i++)
          {
              var childVisual = VisualTreeHelper.GetChild(visual, i);
              var childRadioButton = childVisual as RadioButton;
              if (childRadioButton != null)
              {
                  if (childRadioButton.GroupName == group)
                  {
                      results.Add(childRadioButton);
                  }
              }
              else
              {
                  if (childVisual is Panel)
                  {
                      results.AddRange(FindBindings(childVisual, group));
                  }
              }
          }
          return results;
      }
      

      【讨论】:

        猜你喜欢
        • 2021-12-29
        • 1970-01-01
        • 2017-02-06
        • 2013-11-22
        • 1970-01-01
        • 2011-03-28
        • 2011-05-24
        • 1970-01-01
        • 2016-02-21
        相关资源
        最近更新 更多