【问题标题】:WP7 Binding to Local VariableWP7 绑定到局部变量
【发布时间】:2011-06-22 04:45:13
【问题描述】:

我有一个 UI 元素,我想根据页面中的局部变量设置其颜色(实际上是在模块中,但我可以将其移动到页面)。

我在 WPF 中看到可以将 UI 元素绑定到局部变量,方法是使变量成为属性并使用 FindAncestor 将绑定 RelativeSource 设置为父类:

WPF Binding to local variable

很遗憾,Silverlight 似乎不支持 FindAncestor 模式。

任何可能的解决方案,还是我必须为这个变量创建一个自定义类的实例?

【问题讨论】:

    标签: silverlight variables binding windows-phone-7 local


    【解决方案1】:

    在过去的几周里,我经常从 Silverlight 跳到 WPF,所以下面的想法可能会也可能不会成功。

    您的页面是否设置了 name 属性?如果没有,请设置它 (x:Name="MyPage")。

    那么你可以这样做:

    Fill="{Binding ElementName=MyPage, Path=MyProperty}"
    

    试一试(就在我的脑海中)

    【讨论】:

    • +1,我正要发布相同的答案。 ElementName 绑定是缺少 FindAncestor 的常用(较弱)解决方法。 FWIW,FindAncestor 绑定即将出现在 Silverlight 5 中,所以希望这最终会出现在手机上。
    • 嗯,它使用了一个整数属性来保持简单。将页面命名为“MyPage”,然后在 UI 元素中输入:<RotateTransform Angle="{Binding ElementName=MyPage, Path=gDirection}" />。在页面代码中,我有:Property gDirection As Integer = 45。这会在加载时引发异常。如果我用 45 替换绑定,它可以正常工作,所以看起来绑定不起作用...
    • 所以它只使用一个数字就可以正常工作,但是当插入绑定时,它会给出 XamlParseException:System.Windows.Markup.XamlParseException 发生 Message=AG_E_PARSER_BAD_PROPERTY_VALUE [Line: 45 Position: 42] LineNumber= 45 LinePosition=42 StackTrace: 在 MS.Internal.XcpImports.CheckHResult(UInt32 hr) 在 MS.Internal.XcpImports.UIElement_Measure(UIElement element, Size availableSize) 在 System.Windows.UIElement.Measure(Size availableSize) 在 Microsoft.Phone。 Controls.Maps.MapLayer.MeasureOverride(Size availableSize) ...
    • 作为参考,这是模板中的一个项目,用于地图控件的图钉。
    • 我能够使用这种方法根据页面方向切换元素的可见性。但是,我确实必须在页面中实现 System.ComponentModel.INotifyPropertyChanged 才能使绑定获取更改。
    猜你喜欢
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    • 2012-11-09
    相关资源
    最近更新 更多