2011-11-29 71 views
1

我有一個包含複選框如何禁用複選框內的ListView

<ListView Height="164" HorizontalAlignment="Left" ItemsSource="{Binding ProductList}" Name="listView1" VerticalAlignment="Top"> 
     <ListView.Resources> 
      <Style x:Key="DataGridCheckBox" TargetType="{x:Type CheckBox}"> 
       <Setter Property="FrameworkElement.HorizontalAlignment" Value="Center" /> 
       <Setter Property="Control.HorizontalContentAlignment" Value="Center" /> 
       <Setter Property="UIElement.IsEnabled" Value="True" /> 
       <Setter Property="FrameworkElement.Margin" Value="4" /> 
       <Setter Property="FrameworkElement.VerticalAlignment" Value="Center" /> 
       <Setter Property="Control.VerticalContentAlignment" Value="Center" /> 
      </Style> 
     </ListView.Resources> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn Width="40"> 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <CheckBox Style="{StaticResource DataGridCheckBox}" /> 
         </DataTemplate> 
        </GridViewColumn.CellTemplate> 
       </GridViewColumn> 
       <GridViewColumn DisplayMemberBinding="{Binding ProductName}" Header="Product Name" Width="120" /> 
      </GridView> 
     </ListView.View> 
    </ListView> 

我如何可以禁止代碼複選框一列的ListView? 有沒有可能用類似的方法做到這一點:window1.checkBox1.IsEnabled = false;

回答

0

您可以將CheckBox.IsEnabled綁定到模型類的屬性。

的XAML:

... 
<DataTemplate> 
    <CheckBox Style="{StaticResource DataGridCheckBox}" IsEnabled="{Binding Path=IsEnabled}"/> 
</DataTemplate> 
... 

後面的代碼:

//Your object used in List for ListViews ItemsSource 
... 
public bool IsEnabled{get;set;} 
... 
1

有方法通過代碼訪問DataTemplate中的控件,但這不是正確的方法或方法。你不應該這樣做。您應該使用綁定來禁用或啓用ListView內的複選框

0

做一個結合一些屬性(布爾)表示狀態器isChecked:

... 
<DataTemplate> 
    <CheckBox Style="..." IsChecked="{Binding AmIChecked}" /> 
</DataTemplate> 
...