2017-08-10 74 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

由于第二项将被禁用,这是不可能的选择,但已选定的项目保持选中。

相关问题