Следующий простой код пытается повторно использовать MenuItem, определенный в Window.Resources на двух отдельных меню.WPF XAML определено MenuItem повторное использование начинает работать, затем исчезает
<Window x:Class="WpfApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:collections="clr-namespace:System.Collections;assembly=mscorlib"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<collections:ArrayList x:Key="menuItemValues">
<MenuItem Header="First"/>
<MenuItem Header="Second"/>
<MenuItem Header="Third"/>
</collections:ArrayList>
<MenuItem x:Key="menuItem" x:Shared="False"
ItemsSource="{StaticResource menuItemValues}"
Header="Shared menu item"/>
</Window.Resources>
<StackPanel>
<Menu HorizontalAlignment="Left" VerticalAlignment="Top">
<StaticResource ResourceKey="menuItem"/>
<StaticResource ResourceKey="menuItem"/>
</Menu>
</StackPanel>
</Window>
Это начинается отлично, и когда вы впервые выбираете меню, все выглядит хорошо. Первое меню имеет желательные MenuItems,
Так делает второй:
Но когда вы переходите обратно в первое меню, то MenuItems исчезают:
Может кто-нибудь объяснить, почему меню исчезает, и способ заставить это работать?
Это было обнаружено при исследовании другого SO question, который получал исключение. Я попытался использовать стратегию, обсуждавшуюся на another SO question, и, похоже, она решила проблему, пока вы снова не вернетесь в меню и не исчезнет.
я воспроизвел эту проблему на 2 отдельных машинах:
- Win 10, VS2013 п.Ульт V12.0.40629.00 Обновление 5, .NET V4.6.0138
- Win 7, VS2013 Прет V12.0.31101. 00 Update 4, .NET V4.5.51209
Учитывая, как он используется, вы пытались использовать DynamicResource вместо Static? –
@ChrisW. - Хорошее предложение - я просто попытался переключить теги, и это вызвало «XAMLParseException:« DynamicResourceExtension »можно установить только на DependencyProperty DependencyObject.' – Taterhead
Ah yea, ItemSource, имеет смысл. Хм, я попробую и туша на нем. –