1. 程式人生 > >WPF之路——DataGrid學習

WPF之路——DataGrid學習

 <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裡面的值了
     }
}