• Silverlight找到模板中的子控件


    方法

    public List<T> GetChildObjects<T>(DependencyObject obj, string name) where T : FrameworkElement
    {
      DependencyObject child = null;
      List<T> childList = new List<T>();
      for (int i = 0; i <= VisualTreeHelper.GetChildrenCount(obj) - 1; i++)
      {
        child = VisualTreeHelper.GetChild(obj, i);
        if (child is T && (((T)child).Name == name || string.IsNullOrEmpty(name)))
        {
          childList.Add((T)child);
        }
        childList.AddRange(GetChildObjects<T>(child, ""));//指定集合的元素添加到List队尾
      }
      return childList;
    }

    private void cbName1_Click(object sender, RoutedEventArgs e)
    {
      this.sp1.Visibility = Visibility.Visible;
      string contentname = ((CheckBox)sender).Content.ToString();

      List<CheckBox> collection = GetChildObjects<CheckBox>(lbJuDingZeRen, "");
      foreach (CheckBox item in collection)
      {
        if (item.Content.ToString() == contentname)
        {
          item.IsChecked = true;
        }
        else
        {
          item.IsChecked = false;
        }
      }

    }

    前台

    <DataTemplate x:Key="DataTemplateListBox1">
      <Grid>
        <CheckBox x:Name="cbName1" Content="{Binding 局定责任}" Checked="cbName1_Click" Unchecked="cbName1_Unchecked"             HorizontalAlignment="Right" Margin="0"/>
      </Grid>
    </DataTemplate>

    <ListBox x:Name="lbJuDingZeRen" ItemsSource="{Binding }" ScrollViewer.VerticalScrollBarVisibility="Auto" ItemTemplate="{StaticResource DataTemplateListBox1}"/>

  • 相关阅读:
    多线程中lock用法
    跨域使用Proxy page或Cross Frame
    new 操作符所做的事情
    跨域使用js文件
    跨域使用window.name
    TFS 映射错误( is already mapped in workspace)解决办法
    跨域使用JSONP
    jquery加载页面中的部分内容
    CQRS架构案例Tiny Library CQRS详解:AOP拦截与异常处理
    面向领域驱动架构的查询实现方式
  • 原文地址:https://www.cnblogs.com/caok168/p/2562892.html
Copyright © 2020-2023  润新知