2016-05-19 36 views
0

我是一个新的WPF启动器,并且在实现小事情时遇到了问题。WPF基于可观察集合属性禁用DataGridCheckBoxColumn

我有一个具有一个ObservableCollection 订单一个ViewModel和具有两个道具

  • IsSelected(以指示命令已网格被选中)
  • EnableOrder(以指示是否可以选择的顺序)。

但是,当Orders/EnableOrder为false时,复选框不会被禁用。

<DataGrid ItemsSource="{Binding Orders}"> 
 
      <DataGrid.Columns> 
 
       <DataGridCheckBoxColumn Binding="{Binding IsSelected}"> 
 
        <DataGridCheckBoxColumn.CellStyle> 
 
        <Style TargetType="DataGridCell"> 
 
         <Setter Property="IsEnabled" Value="{Binding Orders/EnableOrder}" /> 
 
        </Style> 
 
        </DataGridCheckBoxColumn.CellStyle> 
 
       </DataGridCheckBoxColumn>     
 
      </DataGrid.Columns> 
 
</DataGrid>

它工作时,我硬编码假像下面

<DataGrid ItemsSource="{Binding Orders}"> 
 
      <DataGrid.Columns> 
 
       <DataGridCheckBoxColumn Binding="{Binding IsSelected}"> 
 
        <DataGridCheckBoxColumn.CellStyle> 
 
        <Style TargetType="DataGridCell"> 
 
         <Setter Property="IsEnabled" Value="False" /> 
 
        </Style> 
 
        </DataGridCheckBoxColumn.CellStyle> 
 
       </DataGridCheckBoxColumn>     
 
      </DataGrid.Columns> 
 
</DataGrid>

我也没能为以下指定绑定为EnableOrder不在XAML intellisense中可见。

<Setter Property="IsEnabled" Value="{Binding EnableOrder}" /> 

请注意,有迹象表明我有网格内和绑定的工作没有任何问题

+2

我会想象intellisense不会拉起EnableOrder,因为你在一个样式中,该样式可能适用于可能有不同的DataContexts的多个项目。因此,如果您绑定到EnableOrder,即使没有任何智能感知,您是否仍然可以构建和运行,如果是这样,它是否工作? –

+0

忽略智能感知,我能够得到它的工作。 –

回答

1

我认为结合是错等简单DataGridTextColumn绑定。检查下面的代码。同时检查输出窗口是否有绑定错误。

<DataGrid ItemsSource="{Binding Orders}"> 
       <DataGrid.Columns> 
        <DataGridCheckBoxColumn Binding="{Binding IsSelected}"> 
         <DataGridCheckBoxColumn.CellStyle> 
         <Style TargetType="DataGridCell"> 
          <Setter Property="IsEnabled" Value="{Binding EnableOrder}" /> 
         </Style> 
         </DataGridCheckBoxColumn.CellStyle> 
        </DataGridCheckBoxColumn>     
       </DataGrid.Columns> 
    </DataGrid> 
0

复制评论为答案,因为运算发现它的工作:

我可以想象智能感知不会拉起EnableOrder,因为你是在风格和样式可以应用于多个项目它们可能有不同的DataContext。因此,如果您绑定到EnableOrder,即使没有任何智能感知,您是否仍然可以构建和运行,如果是这样,它是否工作?