如何隐藏 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 上下文菜单控件做到这一点?
我的列表框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}" />
这很简单,但我认为它应该可以解决问题
我目前正在使用 Windows Phone 8. 我在 xaml 中创建了一个列表框,并为该列表框中的所有项目添加了一个上下文菜单。现在我的要求是根据某些条件显示和隐藏上下文菜单。
我有一个 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>
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}" />
这很简单,但我认为它应该可以解决问题