上面的(一)中只是看明白了如何在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)由於我的程序需求需要,所以我獲得轉換來的數據,下面藍色代碼也是我的特別程序需要。
