簡體   English   中英

如何在Windows Phone 8中隱藏特定列表項的上下文菜單?

[英]How to hide context menu for particular list item in Windows Phone 8?

我目前正在使用Windows Phone 8開發應用程序。我已經在xaml中創建了一個列表框,並為該列表框中的所有項目添加了上下文菜單。 現在,我的要求是根據某些條件顯示和隱藏上下文菜單。

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

誰能建議,對於Windows Phone 8上下文菜單控件是否可以做到這一點?

我的Listbox 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>

delete_flag應該為true或false,在我看來,您能做的最好的事情就是將其綁定到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}" />

這很簡單,但我認為應該可以解決

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM