Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF XAML中的我的.Resources?_Wpf_Vb.net_Xaml_My.resources - Fatal编程技术网

WPF XAML中的我的.Resources?

WPF XAML中的我的.Resources?,wpf,vb.net,xaml,my.resources,Wpf,Vb.net,Xaml,My.resources,有没有办法通过Xaml访问我的.Resources 像这样 <Image Source="{Binding MyImage, Source={x:Static my:Resources}, Converter={StaticResource MyBitmapToImageSourceConverter}}" /> 然后在我的绑定中,我尝试这样访问它: <Setter Property="ImageSource" Value="{Binding MyResour

有没有办法通过Xaml访问我的.Resources

像这样

<Image Source="{Binding MyImage,
    Source={x:Static my:Resources},
    Converter={StaticResource MyBitmapToImageSourceConverter}}" />
然后在我的绑定中,我尝试这样访问它:

<Setter Property="ImageSource"
Value="{Binding MyResources[Ok], Source={x:Static src:Resources.Resources}}"/>

但我仍然得到以下信息:

System.Windows.Data错误:16:无法从“”(类型“Resources”)获取“MyResources”值(类型“Object”)。BindingExpression:Path=MyResources[Ok];DataItem='Resources'(HashCode=59109011);目标元素是“Image”(Name='btnOk');目标属性为“Source”(类型为“ImageSource”)TargetParameterCountException:“System.Reflection.TargetParameterCountException:参数计数不匹配。


顺便说一句,我在MyResources Getter中放置了一个测试MessageBox,似乎根本没有访问该属性。

问题是,默认情况下,为Resources.resx文件生成代码的工具是
VbMyResourcesResXFileCodeGenerator
(“项目项的自定义工具”属性)。此工具生成一个模块,其中资源属性为内部(友元),因此StaticExtension无法访问该模块。要解决此问题,您应该将Resources.resx的自定义工具更改为
PublicVbMyResourcesResXFileCodeGenerator
,这将生成公共成员

此外,VB模块大致相当于静态(共享)类,因此没有可用作绑定源的资源实例,因此无法指定绑定的路径。应将绑定源直接设置为所需的属性:

<Image Source="{Binding Source={x:Static my:Resources.MyImage},
    Converter={StaticResource MyBitmapToImageSourceConverter}}" />

在my.project资源选项卡中将my.resources的访问修饰符从freind更改为public。

我选中了,并且生成器为publicVBMyResourcesXFileCodeGenerator。无论如何,我不认为问题是出于安全原因,可以从程序集中访问Friend。我认为问题在于My.Resources是一个名称空间,而My.Resource.TheResource是一个属性,这里没有类,看看我上面引用的错误,你会发现这就是原因。你有什么进一步的想法吗?在.NET中总是有一个类。。。在这种情况下,这是一个模块,但它几乎与静态类相同。我认为您的名称空间映射不正确,请参阅我的更新答案您就是那个人。我认为,由于模块是隐藏的(HidemoModuleNameAttribute),它将无法工作。我从这里学到的是,总是尝试一下,即使你不会杀死任何东西……有效的方法是“编辑:要使用的名称空间映射如下所示:”
<Image Source="{Binding Source={x:Static my:Resources.MyImage},
    Converter={StaticResource MyBitmapToImageSourceConverter}}" />
xmlns:myRes="clr-namespace:YourApplicationName.My.Resources"