2017-08-10 38 views
0

背景: 我有一個Datagrid有一些測量,我們可以批准和阻止這個測量。 現在我們爲此創建了一個新類型,例如「已取消」。但此類型僅由服務器需要並將其顯示給客戶。 但客戶不應選擇此「已取消」,而應選擇其他兩種類型。在DatagridComboBox中禁用特定項目的選擇

該列表從數據庫中獲取所有不同的元素(3個條目)。 首先,我嘗試從ApprovementCollection中刪除已取消的項目,但隨後顯示的是空字段而不是「已取消」。

問: 是否有可能,禁用只從DataGridComboBoxColumn中的ItemSource屬性的列表界這3項中的一個?

禁用或不顯示在選擇菜單是我必須做的。 (只有 「Freigabe」 和 「GESPERRT」)

View List in action

查看:

<DataGridComboBoxColumn ClipboardContentBinding="{x:Null}" 
             DisplayMemberPath="ApprovementText" 
             Header="{x:Static trans:Translations.ClearenceHeader}" 
             ItemsSource="{Binding Source={StaticResource PossibleComponentMeasurementApprovements}}" 

             SelectedItemBinding="{Binding Approvement, 
                     UpdateSourceTrigger=PropertyChanged}" /> 

視圖模型:

private IEnumerable<ComponentMeasurementApprovement> possibleComponentMeasurementApprovements; 
    public IEnumerable<ComponentMeasurementApprovement> PossibleComponentMeasurementApprovements { 
     get { return possibleComponentMeasurementApprovements; } 
     set { 
      possibleComponentMeasurementApprovements = value; 
      OnPropertyChanged(); 
     } 
    } 

感謝您的幫助

+0

只是不要把它放在'PossibleComponentMeasurementApprovements'集合中。 – icebat

回答

0

這可能會爲您的單元格寫入DataGridTemplateColumn,而不是使用DataGridComboBoxColumn。只需將Enabled添加到您的ComponentMeasurementApprovement課程。此屬性指示是否允許用戶選擇批准。

現在創建一個新的DataGridTemplateColumn,其中包含一個ComboBox作爲模板。可以通過ItemContainerStyleComboBoxComboBox項目的IsEnabled綁定到proeprty。

這裏是代碼

<DataGridTemplateColumn Header="CustomCell"> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <ComboBox ItemsSource="{Binding Source={x:Static local:ViewModel.PossibleComponentMeasurementApprovements}}" 
         DisplayMemberPath="ApprovementText" 
         SelectedItem="{Binding Approvement}"> 
       <ComboBox.ItemContainerStyle> 
        <Style TargetType="{x:Type ComboBoxItem}"> 
         <Setter Property="IsEnabled" Value="{Binding Enabled}"/> 
        </Style> 
       </ComboBox.ItemContainerStyle> 
      </ComboBox> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

這裏是結果

enter image description here

由於第二項將被禁用,這是不可能的選擇,但已選定的項目保持選中。