2017-08-29 58 views
0

我想要一個只有在DataGrid中的單元格被選中時才啓用的按鈕。當SelectionUnit =「Cell」時,爲什麼這個觸發器不工作

此行XAML的當DataGrid的SelectionUnit設置爲「FullRow」作品:

IsEnabled="{Binding ElementName=dataGrid, Path=SelectedItems.Count}" 

它不能正常啓用在DataGrid的SelectionUnit設置按鈕「細胞」

任何想法爲什麼發生這種情況?

是否有任何工作良好的解決方法?

感謝

+0

怎麼樣'IsEnabled =「{Binding ElementName = dataGrid,Path = SelectedCells.Count}」'? –

+0

兩者都無效.. –

+1

選擇單元格時,「SelectedCells.Count」的值是否爲非零值?如果是這樣,你可以給Button提供一個帶有DataTrigger的樣式,當'{Binding ElementName = dataGrid,Path = SelectedCells.Count}'計算爲零時禁用該按鈕。或者,你可以寫一個整數到布爾[值轉換器](https://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter(v = vs.110).aspx)。 –

回答

1

DataGrid的SelectedCells.Count在DataGrid被細胞選擇應該返回一個非零值。 在Button的風格可以綁定到,並在Value="0"時禁用該按鈕。

1

事實證明DataGrid的SelectedCells.Count屬性沒有實現INotifyPropertyChanged。

我的綁定無法通知我的數據觸發時選擇了改變細胞的數量,數據觸發值始終爲0(即使代碼隱藏顯示其他)...

我結束了將我的數據觸發器綁定到跟蹤DataGrid的選定行索引的內部屬性,並檢查它是否等於-1。

  <Button.Style> 
       <Style TargetType="Button"> 
        <Setter Property="IsEnabled" Value="True" /> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding SelectedRowIndex}" Value="-1"> 
          <Setter Property="IsEnabled" Value="False" /> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </Button.Style>