Контрольная ссылка 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 ответов

Решение

Попробуй это

 var v = FindResource("EffectsContext");

Если вы добавили 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;

Удалить x:Key на ContextMenu

Должен ли x:Key быть x:Name?

Не могу проверить здесь, просто предположение:

this.EffectsMenu
Другие вопросы по тегам