silverlight中datagrid用模版列做带复选框,下拉框的例子代码, 初用这个不懂了,表头带全选,有单选什么的例子 的 代码都贴个更好,谢谢

解决方案 »

  1.   

    DataGrid里有模板列,第一列要全选功能 要自定义DataGrid 自己加这个功能,当然你也可以在你的ViewModel多加一个Bool类型的属性 ,然后点击列头checkBox时候 将DataGrid的ItemSource里的所有ViewModel的bool属性设为true 
    下拉框
    <DatatGrid:DataGridTemplateColumn.CellTemplate>
     <DataTemplate>
       <ComBox/>
     </DataTemplate></DatatGrid:DataGridTemplateColumn.CellTemplate>列头是checkBox
    <DataGrid:DataGridTemplateColumn.HeaderStyle>
    <Style TargetType="dataprimitives:DataGridColumnHeader">
                                                <Setter Property="ContentTemplate">
                                                    <Setter.Value>
                                                        <DataTemplate>
                                                            <CheckBox x:Name="ckbSelectAllRow" IsChecked="{Binding [IsChecked], Mode=TwoWay}" Click="ckbSelectAllRow_Click"  />
                                                        </DataTemplate>
                                                    </Setter.Value>
                                                </Setter>
    </Style>
    </DataGrid:DataGridTemplateColumn.HeaderStyle>
      

  2.   

    <sdk:DataGridTemplateColumn Header="选择">
                            <sdk:DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <StackPanel>
                                        <CheckBox Name="chk_select" IsChecked="False" Tag="{Binding ZJ}"/>
                                    </StackPanel>
                                </DataTemplate>
                            </sdk:DataGridTemplateColumn.CellTemplate>
                        </sdk:DataGridTemplateColumn>
    在 后台找不到这个控件
    if (dgrdTest.ItemsSource != null)
                {
                    string strZJ = string.Empty;
                    foreach (var item in dgrdTest.ItemsSource)
                    {
                        CheckBox chk = dgrdTest.Columns[2].GetCellContent(item).FindName("chk_select") as CheckBox;
                        if (chk.IsChecked == true)
                        {
                            strZJ += chk.Tag;
                        }
                    }
                }
    怎么写?
      

  3.   

    List<Obj> list= DataGrid.ItemSource as List<Obj>;
    if(list!=null)
    {
     string strZJ = string.Empty;
    foreach(var item in list)
    {
    if(item.isChecked)
    {
    strZJ=strZJ +item.ZJ
    }
    }
    }
    siliverlight model是可以双向通知的 也就是说你的DataGrid的每一行是一个对象吧,你的CheckBox的Ischecked的属性 可以直接Bing到model的 IsChecked属性上 这样 直接操作对象就可以了。
    向你这样写,太浪费了 当然也可以实现
    CheckBox chk = dgrdTest.Columns[2].GetCellContent(item).FindName("chk_select") as CheckBox;
    这句话得到对象应该不是CheckBox 而是StackPanel吧 
    然后取StackPanel下的第一个就是CheckBox 多个就循环StackPanel下的所有Element
      

  4.   

    dgrdTest.Columns[2].GetCellContent(item)为NULL
    dgrdTest.Columns[2].GetCellContent(item).FindName("chk_select") 为NULL 
    求一个方法取出控件 我要判断这个复选框选上了就取出里面的Tag绑定值要用