2015-02-04 3 views
1

У меня есть TreeView, используя следующий стиль:WPF, TreeViewItem, как не показывать contextMenu в зависимости от свойства зависимостей?

<HierarchicalDataTemplate x:Key="itemTemplate" DataType="{x:Type AttCatalog:AttachmentCatalogModel}" ItemsSource="{Binding Children}"> 
     <TextBlock Text="{Binding Name}" Tag="{Binding Guid}"> 
      <TextBlock.ContextMenu> 
       <ContextMenu> 
        <MenuItem Header="New Item"/> 
        <MenuItem Header="Move to..." /> 
        <MenuItem Header="Delete" /> 
       </ContextMenu> 
      </TextBlock.ContextMenu> 
     </TextBlock> 
</HierarchicalDataTemplate> 

<TreeView x:Name="tree" HorizontalAlignment="Left" Width="216" BorderThickness="0,0,1,0" Background="#FFFBFBFB" IsEnabled="{Binding IsEnabled}" ItemsSource="{Binding Catalogs}" ItemTemplate="{StaticResource itemTemplate}" TreeViewItem.Expanded="OnExpandItemHandler" Margin="0,0,0,241" SelectedItemChanged="tree_SelectedItemChanged"> 

вы можете увидеть TextBlock Tag связывания свойства Guid, мой вопрос, как это сделать, когда этот Guid пуст (00000-00000000-00000), не показать контекстМеню?

+0

Добавить триггер в TextBlock.Trigger, который проверяет свойство тега на null и устанавливает его ContextMenu в null. Или также вы можете использовать конвертер, который будет привязан к ContextMenu. –

ответ

2

В вашем контекстном меню, связать обзорность Guid, и относиться к нему с переходником =>

<ContextMenu Visibility="{Binding Element=Guid, 
          Converter={StaticResource GuidToVisibilityConverter}}"> 
     <MenuItem Header="New Item"/> 
     <MenuItem Header="Move to..." /> 
     <MenuItem Header="Delete" /> 
</ContextMenu> 

В конверторе, можно лечить свою ценность Guid так, как вы хотите, чтобы либо вернуться Видимость .Visible или Visibility.Hidden, в зависимости от значения.

Вы можете найти более подробную информацию о преобразователях here.

Надежда, что помогло!

+0

это работает для меня, спасибо ~! –

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