2011-07-23 79 views
6

嗯,我想它很容易我的情况是有两个元素: 列表框按钮WPF结合元素

<ListBox Name="BannedItemsListBox" 
     Margin="5" 
     MinWidth="100" 
     MaxWidth="100" " Height=" 
     204" ItemsSource="{Binding Path=BannedItems, Mode=TwoWay}"></ListBox> 
<Button Name="RemoveBannedItemsButton" 
     Margin="5" 
     MinWidth="65" 
     Height="22" 
     Click="RemoveBannedItemButton_Click">Remove</Button> 

我要绑定的IsEnabled属性按钮是真实的,只有当项目从在列表框被选择(聚焦)XAML

我试图

IsEnabled="{Binding ElementName=BannedSourcesListBox, Path=TouchesDirectlyOver.Count}" 

但没有去。

回答

5

选择与触摸有什么关系? (也是ElementName是关闭的)

我想试试这个:

IsEnabled="{Binding SelectedItems.Count, ElementName=BannedItemsListBox}" 

编辑:显然,不同的是触发变,人们似乎并没有看到这是如何工作的:基本上,结合系统的尝试将输入转换为手头的属性,一个布尔值,所以当它获得一个整数时,0将转换为false,任何高于true的值。所以如果选择一个或多个项目,按钮将被启用。

3
<Button Content="Button" 
     Height="23" 
     HorizontalAlignment="Left" 
     Margin="138,12,0,0" 
     Name="button1" 
     VerticalAlignment="Top" 
     Width="75" 
     Click="button1_Click"> 
    <Button.Style> 
     <Style> 
      <Setter Property="Button.IsEnabled" 
        Value="True" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ElementName=lstTest , Path=SelectedItem}" 
          Value="{x:Null}"> 
        <Setter Property="Button.IsEnabled" 
          Value="False" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button> 
+0

该逻辑反转,只有在没有选择任何内容时才会启用。 (这也有点迂回) –

+0

@ H.B。谢谢修复它 – sternr