Контрольная ссылка WPF из xaml не видна на стороне кода
<ContextMenu x:Key="EffectsContext"
Name="EffectsMenu"
StaysOpen="true">
<MenuItem Header="Add Blur">
<MenuItem.Icon>
<Image Width="16"
Height="16"
Source="{Binding Source={x:Static prop:Resources.BlurIcon},
Converter={StaticResource BitmapToImageSourceConverter}}" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Add Fractal">
<MenuItem.Icon>
<Image Width="16"
Height="16"
Source="{Binding Source={x:Static prop:Resources.Fractalcon},
Converter={StaticResource BitmapToImageSourceConverter}}" />
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
EffectsMenu
недоступен в моем MainWindow.xaml.cs
файл. Когда я пытаюсь это сделать, он жалуется, что он не доступен в текущем контексте:
public MainWindow ( )
{
this.InitializeComponent ( );
Console.WriteLine ( EffectsMenu );
}
Я также попробовал:
x:Name="EffectsMenu"
но результат тот же.
Есть идеи, что может быть не так и как это исправить?
5 ответов
Решение
Если вы добавили x:key="", я думаю, что вы объявили ContextMenu в ResourceDictionary(например, <SomeControl.Resources>
). В этом случае вы не можете получить к нему доступ напрямую, попробуйте следующее:
Xaml:
<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" >
<StackPanel x:Name="sp">
<StackPanel.Resources>
<ContextMenu x:Key="EffectsContext"
Name="EffectsMenu"
StaysOpen="true">
</ContextMenu>
</StackPanel.Resources>
</StackPanel>
</Window>
Код-за:
ContextMenu menu = this.sp.Resources["EffectsContext"] as ContextMenu;
Не могу проверить здесь, просто предположение:
this.EffectsMenu