从Xaml代码中访问 代码隐藏文件 中定义的静态成员

hhddzz 2010-03-20 02:45:58
应用程序的 根命名空间 是WebTool
窗体类名是 Window1
Window1的代码隐藏文件中定义了静态字段WindowSelf: Public Shared WindowSelf As Window1
该字段会在构造函数中引用最后被创建的实例:
Sub New()
'…… ……
WindowSelf=Me
End Sub
Window1类型还定义了一个属性,URLs

简化后的Xaml代码如下:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:scr="clr-namespace:WebTool"
x:Class="Window1"
x:Name="Window">
<StackPanel>
<TextBlock Text="{Binding Source={x:Static scr:Window1.WindowSelf},Path=URLs}"/>
</StackPanel>
</Window>


这一句<TextBlock Text="{Binding Source={x:Static scr:Window1.WindowSelf},Path=URLs}"/>
总是被提示 “WebTool.Window1不存在名为'WindowSelf'的静态成员”

请问这是怎么回事啊?我明明定义了WindowSelf这个静态字段的。
==========================================================================
其实我是想访问 当前窗体的URLs属性,一开始想了这么个笨办法来取得对窗体对象的引用。后来才想到可以直接用Binding的ElementName属性来指定窗体。
<TextBlock Text="{Binding ElementName=Window,Path=URLs}"/>
虽然目的是实现了,不过那个x:Static出错是为什么呢?
===========================================================================
还有一点很奇怪,虽然有错误提示,但是可以通过编译。不过编译后的程序不能用,运行后在 任务管理器 里可以看到进程,不过进程一下子又会消失。而且一旦进行了编译,VS里和调试相关的按钮就全都变为不可用状态了,怎么都恢复不了。
(好像上一次用VS编译Blend创建的工程也出现了这种情况)





...全文
89 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhddzz 2010-03-20
  • 打赏
  • 举报
回复
Source的值设为另一个 绑定到整个对象 的绑定可以吗
<TextBlock Text="{Binding Source={Binding ElementName=Window},Path=URLs}"/>
hhddzz 2010-03-20
  • 打赏
  • 举报
回复
那要怎么做呢
Binding的Source属性只能用字典资源吗
jv9 2010-03-20
  • 打赏
  • 举报
回复
<TextBlock Text="{Binding Source={x:Static scr:Window1.WindowSelf},Path=URLs}"/>

这样的binding格式有问题。

VS里编译WPF绑定出现问题,会挂起进程,不允许Debug。

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧