Как отключить CheckBox внутри ListView - PullRequest
1 голос
/ 29 ноября 2011

У меня есть 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;?

Ответы [ 3 ]

1 голос
/ 29 ноября 2011

Существуют способы доступа к элементу управления внутри DataTemplate через код, но это не будет правильным способом или подходом.Ты не должен этого делать.Вместо этого вы должны использовать привязки, чтобы отключить или включить флажок внутри ListView

0 голосов
/ 29 ноября 2011

Создание привязки к некоторому свойству (bool), которое представляет состояние isChecked:

...
<DataTemplate>
  <CheckBox Style="..." IsChecked="{Binding AmIChecked}" />
</DataTemplate>
...
0 голосов
/ 29 ноября 2011

Вы можете привязать 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;}
...
...