У меня есть приложение для Windows Phone 8 с использованием XAML/C#. В моем приложении есть ItemsControl
, который основан на шаблоне данных. Мой DataTemplate
выглядит следующим образом:Windows Phone Context Menu Пункт Текст Не отображается
<DataTemplate x:Key="myTemplate">
<Grid Margin="0,0,0,8">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid VerticalAlignment="Center">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Text="{Binding DisplayName}" TextWrapping="NoWrap" Style="{StaticResource PhoneTextLargeStyle}" TextTrimming="WordEllipsis" >
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu>
<toolkit:MenuItem x:Name="customerMenuItem" Foreground="White" Header="View Customer Profile" Click="customerMenuItem_Click" Tag="{Binding Path=CustomerName}" />
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
</TextBlock>
<TextBlock Text="{Binding Summary}" TextWrapping="NoWrap" Grid.Row="1" Style="{StaticResource PhoneTextSmallStyle}" />
</Grid>
<StackPanel Orientation="Horizontal" Grid.Column="1"><!-- Stuff here --></StackPanel>
</Grid>
</DataTemplate>
Этот DataTemplate
упоминается в основной части моего XAML, как показано здесь:
<Grid x:Name="ContentPanel" Grid.Row="1" Grid.ColumnSpan="2" Margin="12,0,12,0">
<ScrollViewer>
<ItemsControl x:Name="myItemsControl" ItemTemplate="{StaticResource myTemplate}" ItemsSource="{Binding Customers}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</ScrollViewer>
</Grid>
Обратите внимание, что «инструментарий» пространства имен происходит от CLR-имен: Microsoft.Phone.Controls; сборка = Microsoft.Phone.Controls.Toolkit. Когда я держу палец (или мышь) на TextBlock
, появляется контекстное меню. Однако я никогда не вижу слов «Просмотр профиля клиента». Я просто вижу блок-блок, который представляет контекстное меню. Я знаю, что элемент есть. Я знаю, потому что событие customerMenuItem_Click
успешно срабатывает. У меня есть MessageBox
, где отображается значение тега. Это значение всегда правильно. По какой-то причине текст пункта меню не отображается. Что я делаю не так?