来自 xaml 的 WPF 控件引用在代码端不可见

发布于 2024-11-07 07:19:30 字数 1231 浏览 0 评论 0原文

<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>

在我的 MainWindow.xaml.cs 文件中无法访问 EffectsMenu 。当我尝试它时,它抱怨它在当前上下文中无法访问:

public MainWindow ( )
{
    this.InitializeComponent ( );

    Console.WriteLine ( EffectsMenu );
}

我也尝试过:

x:Name="EffectsMenu"

但结果相同。

有什么想法可能是错误的以及如何解决它吗?

<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 isn't accessable in my MainWindow.xaml.cs file. When I try it, it complains that it's not accessible in the current context:

public MainWindow ( )
{
    this.InitializeComponent ( );

    Console.WriteLine ( EffectsMenu );
}

I also tried:

x:Name="EffectsMenu"

but same result.

Any ideas what might be wrong and how to fix it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

北风几吹夏 2024-11-14 07:19:30

试试这个

 var v = FindResource("EffectsContext");

Try this

 var v = FindResource("EffectsContext");
〆凄凉。 2024-11-14 07:19:30

如果您添加了 x:key="" 我认为您在 ResourceDictionary 中声明了 ContextMenu(如 )。在这种情况下,您无法直接访问它,请尝试以下操作:

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;

If you added an x:key="" i think that you declared the ContextMenu in a ResourceDictionary(like <SomeControl.Resources>). In this case you can't access it directly, try the following:

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>

Code-behind:

ContextMenu menu = this.sp.Resources["EffectsContext"] as ContextMenu;
怀念你的温柔 2024-11-14 07:19:30

删除 ContextMenu 上的 x:Key

Remove the x:Key on the ContextMenu

分开我的手 2024-11-14 07:19:30

x:Key 应该是 x:Name 吗?

should that x:Key be x:Name instead?

一百个冬季 2024-11-14 07:19:30

无法在这里测试,只是猜测:

this.EffectsMenu

Can't test here, just a guess:

this.EffectsMenu
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文