0
내 페이지에 ListBox가 있습니다. ListBox의 일부 항목을 길게 누르면 ContextMenu 팝업이 표시되고 일부 항목이이 아닌 경우 프로그래밍 방식으로이 requriment를 프로그래밍 방식으로 구현할 수 있습니까?Windows Phone에서 ListBox의 ContextMenu를 프로그래밍 방식으로 팝업하는 방법은 무엇입니까?
내 페이지에 ListBox가 있습니다. ListBox의 일부 항목을 길게 누르면 ContextMenu 팝업이 표시되고 일부 항목이이 아닌 경우 프로그래밍 방식으로이 requriment를 프로그래밍 방식으로 구현할 수 있습니까?Windows Phone에서 ListBox의 ContextMenu를 프로그래밍 방식으로 팝업하는 방법은 무엇입니까?
가능한 해결책은 다음과 같습니다. 당신이해야합니다 XAML에서
public class Item
{
public string Info { get; set; }
// Menu attached or not
public bool OptionsEnabled { get; set; }
}
는 apropriate ItemTelplate로 의 ListView (또는 목록 상자)를 정의하기 :
<ListView Name="myList" Holding="myList_Holding">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Info}" FontSize="24" Margin="7">
<FlyoutBase.AttachedFlyout>
<MenuFlyout>
<MenuFlyoutItem Text="First option"/>
<MenuFlyoutItem Text="Second option"/>
</MenuFlyout>
</FlyoutBase.AttachedFlyout>
</TextBlock>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
을 다음 에 팝업에 대한 정보와 함께 항목의 클래스를 정의 개최 이벤트OptionsEnabled 속성을 선택하여 메뉴를 표시 할 수 있습니다. 그렇다면 다음과 같이하십시오.
private void myList_Holding(object sender, HoldingRoutedEventArgs e)
{
if (e.OriginalSource == null || !(e.OriginalSource is TextBlock)) return;
TextBlock listItem = e.OriginalSource as TextBlock;
if (listItem.DataContext == null) return;
Item itemData = listItem.DataContext as Item;
if (itemData.OptionsEnabled)
FlyoutBase.ShowAttachedFlyout(listItem);
}
download here 일할 수있는 샘플.