WPF之路——DataGrid學習
阿新 • • 發佈:2019-02-17
<DataGrid Name="dataGrid1"> <DataGrid.CellStyle> <Style TargetType="DataGridCell"> <Style.Triggers> <Trigger Property="IsSelected" Value="True"> <!--單元格被選中時 改變顏色--> <Setter Property="Background" Value="LightPink"/> </Trigger> </Style.Triggers> </Style> </DataGrid.CellStyle> <!--省略N個程式碼--> </DataGrid>
⑤ 讓使用者在單元格獲得焦點時編輯 ComboBox
其實這不屬於樣式的範疇了,但我喜歡把改善使用者體驗歸於這一類。當我們的表格裡有類似ComboBox的控制元件時(如: DatePicker 控制元件等)。我們編輯這些控制元件時,首先第一次單擊獲取單元格焦點,
第二次點選才能獲取編輯時的焦點,也就是使用者必須單擊2次才能進行操作。這種機制其實是適合文字框控制元件的,但對於其它控制元件,像ComboBox就顯得很不方便了。所以我們要做的就是單擊第一次的
時候使用者就可以編輯ComboBox。
接下來我要在DataGrid添加了三個新屬性(RowDetailsVisibilityMode、SelectionMode 和 SelectionUnit)和一個新的事件處理程式 (SelectedCellsChanged)
前臺
<DataGrid Name="dataGrid1" CanUserAddRows="False" AutoGenerateColumns="False" RowEditEnding="dataGrid1_RowEditEnding"RowDetailsVisibilityMode="VisibleWhenSelected" SelectionMode="Extended" SelectionUnit="Cell" SelectedCellsChanged="dataGrid1_SelectedCellsChanged" >
</DataGrid>
後臺
現在就差一個 SelectedCellsChanged(選則單元格時出發該事件)事件的後臺程式碼了
private void dataGrid1_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
{
if (e.AddedCells.Count == 0)
return;
var currentCell = e.AddedCells[0];
if (currentCell.Column == dataGrid1.Columns[3]) //Columns[]從0開始 我這的ComboBox在第四列 所以為3
{
dataGrid1.BeginEdit(); // 進入編輯模式 這樣單擊一次就可以選擇ComboBox裡面的值了
}
}