【发布时间】:2009-12-14 07:46:37
【问题描述】:
我在 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。)
感谢您的帮助。
【问题讨论】:
标签: wpf xaml wpf-controls