2011-10-30 37 views

回答

2

你可以使用一個觸發器:

<DataGrid.Style> 
     <Style TargetType="DataGrid"> 
      <Setter Property="IsEnabled" Value="False"/> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding SelectedItems.Count, 
               ElementName=datagrid1}" 
          Value="1"> 
        <Setter Property="IsEnabled" Value="True"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </DataGrid.Style> 
+0

Muchos格拉西亞斯!我認爲'這會做到這一點。 –

0

這是我的快速破解:

tablesControl.SelectionChanged += (sender, sce) => 
    { 
     var c = tablesControl.SelectedItems.Count; 
     var orderingPossible = c == 1; 
     itemsControl.IsEnabled = orderingPossible; 
    }; 
0

在第一格有當您單擊該單元格被解僱的事件或命令,在這種情況下,你需要有你可以設置一些布爾屬性false,然後將Enabled屬性綁定到這個布爾值。如果您使用的MVVM這將是很容易的,看看這個怎麼看 - http://www.youtube.com/watch?v=tKfpvs7ZIyo

1

您可以:

  • 創建IValueConverter,也許它是從一個叫NotEqualToOneBooleanConverter
  • 綁定IsEnabledDataGridSelectedItems.Count
  • 坐落在此BindingConverterNotEqualToOneBooleanConverter

這種方法很好,因爲一旦你的轉換器被創建,它可以應用於整個XAML以及任何類型和任何屬性(不僅僅是DataGridSelectedItems.Count)。爲了使它更加靈活,你可以有一個更通用的轉換器版本,它可以比較從XAML直接指定的任何兩個值(一個來自Binding,另一個被指定爲Converter的屬性)。

這種方法的缺點 - 僅限於XAML,難以測試,特別是如果您試圖實現的是業務需求而不僅僅是圖形效果。

希望這會有所幫助!

相關問題