У меня есть ListBox в Wpf, заполненный ListBoxItems - каждый элемент содержит объект файла и «информационную кнопку». Эти файловые объекты содержат свойства файла, такие как имя файла, путь и т. Д., Но некоторые из этих файлов недействительны, что отмечено флагом.
Я хочу отключить элементы списка, которые содержат недопустимый файл, кроме кнопки информации внутри.
Я успешно отключил весь элемент списка на недопустимых элементах, но это неверно, поскольку каждый файловый объект (независимо от того, является ли он недействительным или нет) содержит определенную информацию о файле. Это может быть показано при нажатии кнопки информации.
Этот код работает хорошо, но в результате все элементы внутри элемента списка отключены. Я хочу, чтобы этот элемент кнопки был включен.
И код:
<ListBox x:Name="fileNameListBox"
ItemsSource="{Binding FileListViewModel.FilteredFileList, Mode=TwoWay}"
Grid.Row="4" Grid.Column="0"
Margin="0, 0, 0, 5"
HorizontalContentAlignment="Left">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding FileListSelectionChangedCommand}"
CommandParameter="{Binding ElementName=fileNameListBox, Path=SelectedItem}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<Label Content="{Binding Filename}" FontWeight="Bold"/>
<Label Content="{Binding FilePath}" FontWeight="Light" FontSize="10"/>
<Button x:Name="infoButton" Width="50" Content="Info" FontWeight="Light" FontSize="14" HorizontalAlignment="Left"
Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type local:FileListView}}, Path=DataContext.FileListViewModel.FileInfoClickedCommand }"
CommandParameter="{Binding}" /> <!-- I want this button to be enabled -->
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsValid}" Value="False">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
Итак, мой вопрос, есть ли способ включить каждую кнопку в этих элементах ListBox? Или я могу сделать это с помощью другого хитрого решения?