2012-04-30 16 views
6

mam przycisk wewnątrz sieci, który zawiera wiele innych przycisków i elementów sterujących, takich jak tenWłączenie konkretnego przycisku wewnątrz niepełnosprawnego siatki

<Grid IsEnabled="false"> 
    <Grid.ColumnsDefinition> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
    </Grid.ColumnsDefinition> 
    <Button Content="Run"/> 
    <Button Grid.Column="1" Content="Test"/> 
    <Button Grid.Column="2" Content="Cancel" IsEnabled="true"/> 
</Grid> 

Jak widać siatka jest wyłączona, ale przycisk Anuluj w środku powinien być włączony.

Problem polega na tym, że mimo iż ustawiłem wewnętrzny przycisk, aby był włączony, pozostaje on wyłączony, prawdopodobnie dlatego, że jego rodzic jest wyłączony.

Czy istnieje sposób na zastąpienie tego zachowania i zmusić przycisk do włączenia?

Używam go dla przypadku, w którym długi proces działa w tle, więc wszystkie działania interfejsu użytkownika, z wyjątkiem anulowania procesu, powinny być wyłączone.

Dzięki!

Odpowiedz

2

Nr Ustawienie IsEnabled właściwość false powoduje wyłączenie wszystkich zagnieżdżonych elementów wizualnych. Należy myśleć o zawartości elementu jako części jego istoty. Wyłączenie elementu oznacza wyłączenie wszystkich jego części.

Najprostszym rozwiązaniem jest zmiana znaczników zgodnie z potrzebami. Wolałbym przynieść Anuluj przycisk z tym Grid tak to nigdy nie dotkniętej IsEnabled własność Grid

+3

przykładowy kod przyniosłem tutaj jest tylko prosta wersja o wiele bardziej złożone struktury UI mam. Wiem, że twoje rozwiązanie zadziałałoby, ale oznaczałoby to, że poradziłbym sobie z włączaniem i wyłączaniem wielu innych kontrolek rodzeństwa, które byłyby dużym obciążeniem dla prostego żądania. Zastanawiam się, czy może istnieje inne rozwiązanie. Dzięki! – Dror

+0

Rozwiązaniem jest użycie poleceń i/lub MVVM – EvAlex

Powiązane problemy