Я пытаюсь установить пункт отключен для ComboBox, у меня есть пункт модель:для Windows Универсальное приложение - Отключить элемент в ComboBox
public class PermissionsViewItem
{
public string Title { get; set; }
public bool IsEnabled { get; set; }
}
И ComboBox определено:
<ComboBox Background="WhiteSmoke" Margin="65,308,0,0" BorderThickness="0" Width="220" Padding="0" Foreground="#FF7B7A7F" ItemsSource="{Binding PermissionsViewItems}" >
<ComboBox.ItemTemplate>
<DataTemplate x:DataType="local:PermissionsViewItem">
<StackPanel >
<Grid>
<Border Background="{x:Null}" BorderThickness="0" HorizontalAlignment="Left" VerticalAlignment="Center">
<TextBlock Text="{x:Bind Title}" FontWeight="SemiBold" />
</Border>
</Grid>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Однако, как представляется, не можете отключить элемент вручную, но есть элемент ComboBoxItem, сгенерированный (я вижу его в LiveVisualTree), который имеет свойство IsEnabled, и он работает. Я могу получить к нему доступ с помощью стилизации
<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem" >
<Setter Property="IsEnabled" Value="False"/>
</Style>
</ComboBox.ItemContainerStyle>
Это будет отключить каждый элемент, но, к сожалению, ItemContainerStyle не связывается с пунктом, поскольку он имеет контекст ComboBox не PermissionsViewItem поэтому не могу использовать PermissionsViewItem.IsEnabled здесь недвижимости.
Есть ли способ отключить определенный элемент (достаточно хакерского способа)?
Первый - TextBlock не имеет свойства IsEnabled. Во-вторых, конечно, я могу имитировать IsEnabled в DataTemplate, но выбор и выделение все еще существуют, которые предоставляются элементом управления ComboBox, если я не установил ComboBoxItem.IsEnabled = false как-то. –
Извините, я проверил IsEnabled на проекте wpf. В WinRT Textblock есть свойство Видимость. Попробуйте связать это? –
Опять же - он не поможет, он не отключает элемент. Свойство Visibility используется для отображения элемента, я не хочу скрыть или удалить элемент. Также отключить TextBlock или родительскую сетку, не удаляя эффекты подсветки ComboBox и ленты. –