c# - WP7 XAML 中控件之间的动态绑定(bind)

标签 c# wpf xaml windows-phone-7

我正在尝试在 WP7 XAML 中绘制一条简单的线,如下所示。使用静态坐标值可以正常工作。

<Line Stroke="White" 
      X1="1" Y1="1" 
      X2="200" Y2="1" />

我需要的是根据匹配的属性值(例如它的 IdName)绑定(bind)相对于同一 Canvas 上其他控件的坐标值。绑定(bind)正确的控件后,我需要获取其 Left 和/或 Top Canvas 位置。使用模糊的伪代码,这是我希望能够做的...

<Line Stroke="White" 
      X1="{Binding Canvas.Left, Source={Binding <a_control_where_a_property_equals_some_value>}}" Y1="1" 
      X2="200" Y2="1" />

我已经尝试了很多绑定(bind)方案,但都没有成功。额外的复杂性在于这是 Windows Phone 7 (WP7) 绑定(bind)而不是完全成熟的 XAML。

注意:所有控件都是在运行时添加的,因此它们不是静态定义的。

有什么建议吗???

最佳答案

最好的办法就是使用 ElementName .除此之外,您需要在两个控件都将绑定(bind)到的某个地方公开一个公共(public)属性。可能在 View 模型中,但这取决于您的设置。

元素名称示例:

<Canvas>
    <Line x:Name="line1" Stroke="White" X1="1" Y1="1"  X2="200" Y2="1" />
    <Line Stroke="White" X1="{Binding ElementName=line1, Path=X1}" Y1="10"  X2="200" Y2="1" />
</Canvas>

关于c# - WP7 XAML 中控件之间的动态绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6782647/

相关文章:

c# - 用可用字体列表填充 ComboBox

c# - uwp xaml 解析失败,类库 dll

c# - 泛型方法不调用类型为 'T' 的方法

c# - this.TopMost = true 不起作用?

c# - 存储库模式,UoW模式,普通NHibernate session

c# - 为什么我不能访问 DelegateCommand 的执行委托(delegate)中的实例属性?

c# - 将 WPF 控件类作为模板类

wpf - Storyboard未从 ControlTemplate DataTrigger 执行

wpf - 在生成的 Entity Framework 类上实现 INotifyPropertyChanged

wpf - 将可见性绑定(bind)到 Text.Length