【问题标题】:Disable editing of cells in XamGrid禁用 XamGrid 中的单元格编辑
【发布时间】:2016-05-09 06:00:23
【问题描述】:

我正在开发与 DataTable 绑定的 XamGrid。我想在特定条件下禁用单元格编辑。我已经创建了 XamGrid 的行为。

可以根据我的要求提出解决方案吗?

【问题讨论】:

    标签: wpf xaml mvvm infragistics xamgrid


    【解决方案1】:

    尝试使用数据触发器定义样式:

            <igWPF:XamDataGrid.Resources>
    
            ...
            <Style TargetType="CellValuePresenter">
                <Style.Triggers>
                    <!--one condition based trigger - condition is inside the cell data context-->
                    <DataTrigger Binding="{Binding Path=DataItem.ConditionA}" Value="True">
                        <Setter Property="IsEnabled" Value="False"/>
                    </DataTrigger>
                    <!--multiple condition based trigger - condition is inside the cell data context-->
                    <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                            <Condition Binding="{Binding Path=DataItem.ConditionA}" Value="True" />
                            <Condition Binding="{Binding Path=DataItem.ConditionB}" Value="False" />
                        </MultiDataTrigger.Conditions>
                        <MultiDataTrigger.Setters>
                            <Setter Property="IsEnabled" Value="False"></Setter>
                        </MultiDataTrigger.Setters>
                    </MultiDataTrigger>
                </Style.Triggers>
            </Style>
    
            ...
    
        </igWPF:XamDataGrid.Resources>
    

    问候。

    【讨论】:

      【解决方案2】:

      使用CellValuePresenter的样式:

      <Style x:Key="DisableForCTE" TargetType="{x:Type iDP:CellValuePresenter}" >
          <Style.Triggers>
              <DataTrigger Binding="{Binding Path=DataItem.CTESubLocation}" Value="No">
                    <Setter Property="IsEnabled" Value="False"></Setter>                        
               </DataTrigger>                    
           </Style.Triggers>
      </Style>
      

      如果条件是预定义的,cells 可以作为列级别禁用:

       <iDP:Field Name="LatestEffectiveDate" Label="Latest Effective Date" >
       <iDP:Field.Settings>
           <iDP:FieldSettings AllowEdit="False">                                       
           </iDP:FieldSettings>
        </iDP:Field.Settings>
      

      【讨论】:

        【解决方案3】:

        这对我有用:

         dataGrid.EditingSettings.AllowEditing = EditingType.None;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-16
          • 1970-01-01
          • 2011-10-09
          • 2016-07-15
          • 2011-12-05
          • 1970-01-01
          相关资源
          最近更新 更多