2012-03-21 3 views
2

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

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

ответ

0

Почему не просто установить IsEnabled на вашем ListBoxItem вместо этого? Он также должен отключить Button.

Но что сказал, вы могли бы привязать к Button.IsEnabledListBoxItem.IsEnabled с использованием RelativeSource связывания и установить IsEnabled свойство ListBoxItem, а не Button слишком

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

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

+1

спасибо, но этого я не хочу достичь. Я хочу получить свойство IsEnabled дочернего элемента управления. Я использую MVVM, но я хочу использовать триггер в стиле, который находится в моем ресурсном словаре. – DronBoard