WPF - 即使在容器中启用了保持按钮也被禁用

时间:2009-12-11 21:58:07

标签: wpf xaml wpf-controls

我在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。)

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

而不是对ListBoxItem说IsEnabled =“false”,而是将内部元素的IsEnabled属性设置为false,如CheckBox和all。无论如何,这将使您的按钮保持启用状态。