У меня есть кнопка в ListBoxItem. Я хочу, чтобы кнопка оставалась включенной, даже если элемент списка заблокирован. Это возможно?WPF - кнопка Keep включена даже в контейнере отключена
Вот мой код стиля для списка, элемента списка и кнопки (называемой btnPick).
<Window.Resources>
<Style x:Key="CheckBoxListStyle" TargetType="ListBox">
<Style.Resources>
<Style TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Grid ScrollViewer.CanContentScroll="True" Margin="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20" />
<ColumnDefinition Width="50" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="30" />
</Grid.ColumnDefinitions>
<CheckBox VerticalAlignment="Center" Grid.Column="0" IsChecked="{Binding IsSelected,
RelativeSource={RelativeSource TemplatedParent},
Mode=TwoWay}" Name="chkSelectedCheckBox" />
<TextBlock VerticalAlignment="Center" Grid.Column="1" Margin="5,0,5,0" Text="{Binding Id}" />
<TextBlock VerticalAlignment="Center" Grid.Column="2" Margin="5,0,5,0" Text="{Binding Title}" />
<!--This is the one that I want to stay enabled somehow-->
<Button HorizontalAlignment="Right" x:Name="btnPick" Grid.Column="3" Tag="{Binding Id}" Margin="5,0,5,0"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource DisableWorkItemConverter}">
<Binding ElementName="MainForm" Path="PickedWorkItemID"/>
<Binding Path="Id"/>
<Binding ElementName="btnCreateLink" Path="IsClicked"></Binding>
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="IsEnabled" Value="False"/>
<Setter Property="loc:Main.IsCurrentItemEnabledChanged" Value="True"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Style.Resources>
</Style>
</Window.Resources>
Прямо сейчас мой триггер данных задает значение IsEnabled для всей позиции. Возможно ли каким-то образом получить доступ к дочерним элементам ListBoxItem?
Что-то вроде:
<Setter Property="chkSelectedCheckBox.IsEnabled" Value="False"/>
Это то, что я ищу (но это не работает). (Я думал, что TargetName может помочь мне, но это работает только для DataTemplates.)
Спасибо за любую помощь.
Спасибо за предложение, но как я могу это сделать? Я обновил свой код, чтобы показать свой DataTrigger. Если вы знаете способ изменить его, чтобы я мог просто отключить определенные части детей ListBoxItem, я хотел бы это услышать. – Vaccano
Я понял, как это сделать (я переместил DataTrigger в секцию ControlTemplate.Trigger). Он отключил этот флажок, но нажатие на него по-прежнему делает его проверкой – Vaccano
, это происходит из-за привязки, установленной в свойстве IsChecked CheckBox с свойством IsSelected. вы можете удалить свойство «Связывание» и «Обновить IsChecked» вручную, или вы можете использовать UpdateSourceTrigger = «Явно» в Binding и вызвать метод UpdateTarget – viky