• WPF系列:GridView列绑定控件(二)


        上面的(一)中只是看明白了如何在GridView中添加控件,后面由于程序需要处理数据,那可定是要获得和设置GridView中控件的值了,下面就把我简单的程序写一下。

     <telerik:RadGridView  ShowGroupPanel="False" AutoGenerateColumns="False" 
    x:Name="grd1" ItemsSource="{Binding Path=LstData, Mode=TwoWay}" SelectionMode="Extended" RowHeight="50"     telerik:StyleManager.Theme="Windows7">
                    <telerik:RadGridView.Columns>
                        <telerik:GridViewSelectColumn  />
                        <telerik:GridViewColumn Header="层次">
                            <telerik:GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock x:Name="textBlockLevel" Text="{Binding Level,Mode=TwoWay}" 
    VerticalAlignment="Center" Height="22" ></TextBlock>
                                </DataTemplate>
                            </telerik:GridViewColumn.CellTemplate>
                        </telerik:GridViewColumn>
    
                        <telerik:GridViewColumn Header="厚度" Width="80">
                            <telerik:GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBox x:Name="textBoxDeepth"
    VerticalAlignment="Center" Height="22" TextChanged="textBoxDeepth_TextChanged"></TextBox>
                                </DataTemplate>
                            </telerik:GridViewColumn.CellTemplate>
                        </telerik:GridViewColumn>
    
                        <telerik:GridViewColumn Header="颜色" Width="120">
                            <telerik:GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal">
                                        <telerik:RadComboBox Margin="5,0,0,0" 
    Width="60" Height="20"   ItemsSource="{Binding BaseColor}" VerticalAlignment="Center" x:Name="RadComboBoxColorSelect" SelectionChanged="RadComboBoxColorSelect_SelectionChanged">
    
                                        </telerik:RadComboBox>
                                        <telerik:RadColorPicker Name="RadColorPickerColorSelect" SelectedColorChanged="RadColorPickerColorSelect_SelectedColorChanged"></telerik:RadColorPicker>
                                    </StackPanel>
                                </DataTemplate>
                            </telerik:GridViewColumn.CellTemplate>
    
                        </telerik:GridViewColumn>
                        <telerik:GridViewColumn Header="结构" Width="95">
                            <telerik:GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal">
                                        <telerik:RadComboBox Margin="5,0,0,0" 
    Width="60" Height="20"   ItemsSource="{Binding Structure}" VerticalAlignment="Center" x:Name="RadComboBoxStructure" SelectionChanged="RadComboBoxStructure_SelectionChanged">
    
                                        </telerik:RadComboBox>
                                    </StackPanel>
                                </DataTemplate>
                            </telerik:GridViewColumn.CellTemplate>
    
                        </telerik:GridViewColumn>
                    </telerik:RadGridView.Columns>
                </telerik:RadGridView>
    

      上面和以前的代码大部分都相同,只是添加了空间的事件处理函数(红色部分),根据事件的名称很容易推断出我们要处理的事件是什么,下面就是每一个事件处理代码,由于大部分都很相似,我就详细描述其中一个比较复杂的事件处理函数。

       private void RadColorPickerColorSelect_SelectedColorChanged(object sender, EventArgs e)
            {
                RadColorPicker radColorPicker = sender as RadColorPicker;(1)
                var dataContext = (LevelInfo)radColorPicker.DataContext;(2)
                var level = dataContext.Level;(3)
                bool isExist = false;
                foreach (var item in _CobaltRichCrustUILevelInfos)
                {
                    if (item.Level == level)
                    {
                        isExist = true;
                        item.LevelData.Color = radColorPicker.SelectedColor;
                    }
                }
                if (!isExist)
                {
                    CobaltRichCrustUILevelInfo cobaltRichCrustUILevelInfo = new CobaltRichCrustUILevelInfo();
                    cobaltRichCrustUILevelInfo.Level = level;
                    cobaltRichCrustUILevelInfo.LevelData.Color = radColorPicker.SelectedColor;
                    _CobaltRichCrustUILevelInfos.Add(cobaltRichCrustUILevelInfo);
                }
            }
    

      (1)事件处理函数的sender其实就是你处理的那个空间类型的,你把它转换为你的控件类型即可

           (2) 由于每个在GridView中控件都已经绑定了我们以前说过的LeveInfo这个类的信息,所以,这里我们就可以强制转换会原来的结构,这来就可以转换为你原来绑定的结构,下面就可以根据你自己的需求来进行编程了

          (3)由于我的程序需求需要,所以我获得转换来的数据,下面蓝色代码也是我的特别程序需要。

  • 相关阅读:
    文件系统之磁盘配额
    mysql之基础操作
    mysql-两种方式安装
    文件系统之parted 分区
    JDK1.7配置及测试
    ASP.NET中处理自定义错误的最佳方式
    C#使用System.Data.SQLite操作SQLite
    C#判断ip地址是否ping的通
    C#的WinForm中制作饼状图和柱状图
    使用.net(C#)发送邮件学习手册(带成功案例)
  • 原文地址:https://www.cnblogs.com/lufangtao/p/2634086.html
Copyright © 2020-2023  润新知