Как найти свойство IsEnabled дочернего элемента управления в ListBoxItem для Trigger - PullRequest
2 голосов
/ 21 марта 2012

Я пытаюсь отключить элемент ListBox в зависимости от свойства IsEnabled содержимого ListBoxItem.Как и в этом коде, кнопка 1 имеет IsEnabled = False, но элемент списка можно выбрать.Я хочу отключить выбор, если свойство IsEnabled содержимого имеет значение false.как вызвать поиск содержимого элемента и его свойства IsEnabled.

<Grid>
      <ListBox>
         <ListBox.ItemTemplate>
            <DataTemplate>
               <DataTemplate.Triggers>
                  <Trigger Property="IsEnabled"  Value="False">
                     <Setter Property="IsEnabled" Value="False"/>
                  </Trigger>
               </DataTemplate.Triggers>
            </DataTemplate>
         </ListBox.ItemTemplate>
         <ListBoxItem>
            <Button IsEnabled="False">1</Button>
         </ListBoxItem>
         <ListBoxItem>
            <Button>2</Button>
         </ListBoxItem>
         <ListBoxItem>
            <Button>3</Button>
         </ListBoxItem>         
      </ListBox>
</Grid>

1 Ответ

0 голосов
/ 21 марта 2012

Почему бы просто не установить IsEnabled на ListBoxItem? Также следует отключить Button.

Но при этом вы можете привязать Button.IsEnabled к ListBoxItem.IsEnabled, используя привязку RelativeSource, и установить свойство IsEnabled для ListBoxItem, а не Button тоже

<Button IsEnabled="{Binding IsEnabled, 
    RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}" />

Если вы работаете с WPF, я настоятельно рекомендую вам изучить шаблон проектирования MVVM. Он хорошо подходит для WPF, и с его помощью вы можете связать ListBoxItem.IsEnabled и Button.IsEnabled с одним и тем же свойством в DataContext

...