次の単純なコードは、Window.Resourcesで定義されたMenuItemを2つの別々のメニューに再利用しようとします。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>
これは素晴らしいことです。最初にメニューを選択すると、すべてがうまく見えます。
しかし、あなたは戻って最初のメニューに移動するとき、のMenuItemが消える::
、希望のMenuItemを持っています
誰かがメニューが消える理由を説明できますか?これを動作させる方法は?
これは例外を取得していた別のSO questionを調査中に発見されました。私はanother SO questionで議論された戦略を使用しようとしたが、メニューに戻ると消えるまで問題を解決するように見えた。
私は2台の別々のマシン上でこの問題を再現しています
- 勝利10、VS2013 ULT V12.0.40629.00アップデート5、.NET V4.6.0138
- 勝利7、VS2013プレムV12.0.31101。 00更新4、.NET V4.5.51209
スタティックの代わりに 'DynamicResource'を試しましたか? –
@ChrisW。 - 良い提案 - タグの切り替えを試みたところ、XAMLParseExceptionが発生しました:「DynamicResourceExtension」はDependencyObjectのDependencyPropertyにしか設定できません。 – Taterhead
ああ、ItemSourceは意味があります。うーん、私はそれを試してみるだろう。 –