2016-01-14 1 views
0

Я пытаюсь установить пункт отключен для 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 здесь недвижимости.

Есть ли способ отключить определенный элемент (достаточно хакерского способа)?

ответ

0

Свойство Bind IsEnabled в TextBlock.

<TextBlock Text="{x:Bind Title}" FontWeight="SemiBold" IsEnabled="{Binding IsEnabled}" /> 
+0

Первый - TextBlock не имеет свойства IsEnabled. Во-вторых, конечно, я могу имитировать IsEnabled в DataTemplate, но выбор и выделение все еще существуют, которые предоставляются элементом управления ComboBox, если я не установил ComboBoxItem.IsEnabled = false как-то. –

+0

Извините, я проверил IsEnabled на проекте wpf. В WinRT Textblock есть свойство Видимость. Попробуйте связать это? –

+0

Опять же - он не поможет, он не отключает элемент. Свойство Visibility используется для отображения элемента, я не хочу скрыть или удалить элемент. Также отключить TextBlock или родительскую сетку, не удаляя эффекты подсветки ComboBox и ленты. –

Смежные вопросы