上面的(一)中只是看明白了如何在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)由于我的程序需求需要,所以我获得转换来的数据,下面蓝色代码也是我的特别程序需要。