我有一个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>
如何禁用代码中的复选框?
是否可以使用以下内容执行此操作:window1.checkBox1.IsEnabled = false;
?
答案 0 :(得分:1)
有些方法可以通过代码访问DataTemplate
内的控件,但这不是正确的方法或方法。你不应该这样做。您应该使用绑定来禁用或启用ListView
答案 1 :(得分: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;}
...
答案 2 :(得分:0)
绑定到表示isChecked状态的某个Property(bool):
...
<DataTemplate>
<CheckBox Style="..." IsChecked="{Binding AmIChecked}" />
</DataTemplate>
...