Как найти свойство IsEnabled дочернего элемента управления в ListBoxItem для Trigger
Я пытаюсь отключить элемент 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 ответ
Почему бы просто не установить 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