我在ListBoxItem中有一个按钮。我希望按钮保持启用,即使禁用列表框项目。这可能吗?
这是我的列表框,列表框项目和按钮(称为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。)
感谢您的帮助。
答案 0 :(得分:1)
而不是对ListBoxItem说IsEnabled =“false”,而是将内部元素的IsEnabled属性设置为false,如CheckBox和all。无论如何,这将使您的按钮保持启用状态。