2015-07-20 137 views
1

我目前正在使用Windows Phone 8開發應用程序。我在xaml中創建了一個列表框,併爲該列表框中的所有項目添加了一個上下文菜單。現在我的要求是基於某些條件來顯示和隱藏上下文菜單。如何隱藏Windows Phone 8中特定列表項的上下文菜單?

我有一個delete_flag參數,如果delete_flag的值是1那麼我想顯示該項目的上下文菜單,否則如果它是0則隱藏context_menu。

任何人都可以建議,是否有可能做到這一點的Windows Phone 8上下文菜單控制?

我的列表框XAML代碼是如下:

<ListBox x:Name="myListBox" 
       toolkit:TiltEffect.IsTiltEnabled="True" 
       HorizontalContentAlignment="Center" 
       ItemContainerStyle="{StaticResource GenericListBoxContainerStyle}" 
       SelectedItem="{Binding}" 
       SelectionChanged="myreportsListBox_SelectionChanged" 
       > 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <Grid Margin="0,1,0,1" 
          Background="White"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="Auto" /> 
          <ColumnDefinition Width="*" /> 
         </Grid.ColumnDefinitions> 
         <Ellipse Grid.Column="0" 
           Height="60" 
           Width="60" 
           Margin="7"> 
          <Ellipse.Fill> 
         <ImageBrush ImageSource="{Binding image, Converter={StaticResource Imageconverter}}"></ImageBrush> 
          </Ellipse.Fill> 
         </Ellipse> 
         <StackPanel Grid.Column="1" 
            Margin="0,8,0,8"> 

          <TextBlock Margin="2" 
             Style="{StaticResource HeaderContentStyle}"> 
             <Run Text=""/> 
             <Run Text="{Binding id}"/> 
             <Run Text="-"/> 
             <Run Text="{Binding name}"/> 

          </TextBlock> 

          <TextBlock Margin="2" 
             Style="{StaticResource DescriptionContentStyle}"> 
             <Run Text=""/> 
             <Run Text="{Binding date}"/> 
             <Run Text="-"/> 
             <Run Text="{Binding status}"/> 

          </TextBlock> 
         </StackPanel> 
         <toolkit:ContextMenuService.ContextMenu> 
          <toolkit:ContextMenu Name="servicerequestContextMenu" 
               IsZoomEnabled="False" 
               > 


           <toolkit:MenuItem Header="Delete" 
                Name="DeleteMenuBtn" 
                Click="DeleteMenuBtn_Click" 
                CommandParameter="{Binding}" /> 

          </toolkit:ContextMenu> 
         </toolkit:ContextMenuService.ContextMenu> 
        </Grid> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 

回答

0

delete_flag應該是真的還是假的,在我看來,你能做的最好的事情,就是將其綁定到IsEnabled標籤。

<toolkit:MenuItem Header="Delete" 
    IsEnabled="{Binding delete_flag}" 
    Name="DeleteMenuBtn" 
    Click="DeleteMenuBtn_Click" 
    CommandParameter="{Binding}" /> 

意見後編輯

創建的項目模型

public Visibility SetVisibility 
    { 
     get 
     { 
      return delete_flag == 1 ? Visibility.Visible:Visibility.Collapsed; 
     } 

    } 
.... 
<toolkit:MenuItem Header="Delete" 
    Visibility="{Binding SetVisibility}" 
    Name="DeleteMenuBtn" 
    Click="DeleteMenuBtn_Click" 
    CommandParameter="{Binding}" /> 

這很簡單,但我認爲它應該做的伎倆

+0

delete_flag的價值是在新的財產json和json由服務器發送,所以我不能更改爲true或false。 –

+0

那麼爲什麼你不只是在項目模型中添加另一個屬性 –

+0

是的,這些幫助我在一定程度上,但現在上下文菜單打開,但用戶不能點擊刪除按鈕,但有可能上下文菜單不打開「delete_flag = 0」? –