Cóż, myślę, że to proste, mój scenariusz składa się z 2 elementów: ListBox i Przycisk:

<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>

Chcę powiązać przycisk właściwości IsEnabled, aby był prawdziwy tylko wtedy, gdy element z ListBox jest zaznaczony (ukierunkowany) w XAML

Próbowałem

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

Ale nie iść.

10
kaycee 24 lipiec 2011, 01:22

2 odpowiedzi

Najlepsza odpowiedź

Co wybór ma wspólnego z Touches? (Również ElementName jest wyłączony)

Spróbuję tego:

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

Objaśnienie: Zasadniczo system wiązania próbuje przekonwertować dane wejściowe na odpowiednią właściwość, wartość logiczną, więc gdy otrzyma liczbę całkowitą, 0 zostanie przekonwertowane na false, wszystko wyższe na true . Tak więc przycisk zostanie włączony, jeśli zostanie wybrany jeden lub więcej elementów.

9
H.B. 17 luty 2021, 13:03
<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>
4
Mohit Shrivastava 2 październik 2015, 09:17