WPF:绑定页边距/厚度左和顶部属性

时间:2018-11-17 10:13:30

标签: wpf mvvm binding margin

我在绑定方面遇到了问题(我知道为什么我会变成这种例外,但不知道如何解决该问题)。

我已经尝试过这段代码。

  <TextBlock HorizontalAlignment="Left" >
                        <TextBlock.Margin>
                            <Thickness Left="{Binding POSX.Value, Converter={StaticResource DPIConverter}}"
                                       Top="{Binding POSY.Value, Converter={StaticResource DPIConverter}}"/>
                        </TextBlock.Margin>
                    </TextBlock>

我遇到一个例外,它说,您无法绑定厚度[LEFT],[TOP]属性。 (例如,为什么:导致这些属性不是依赖属性)

感谢您的帮助。

编辑:如果您不明白我要达到的目标

->我想绑定页边距的左侧和顶部属性<-

1 个答案:

答案 0 :(得分:1)

是的,您不能绑定Left,Top,right或Bottom,因为它们不是依赖项属性。它们是CLR属性。 DependencyProperty是CLR属性的包装。

定义依赖项属性的类必须从DependencyObject类继承。厚度是一个不从DependencyObject类继承的类。但是Margin是从TextBlock继承的,TextBlock是从FrameworkElement继承的,而FrameworkElement是从UIElement继承的,UIElement是从Visual继承的,Visual是从DependencyObject类继承的。

您可以绑定的是Margin,因为Margin是在FrameworkElement类中注册的依赖项属性。

您可以这样更改Xaml (示例代码)

Changed Settings-->Data Binding to "Reference code generated by the compiler" instead of "Reference code generated by Android Studio"

下面是转换器代码,我们可以在其中发送整个厚度

<TextBlock HorizontalAlignment="Left" Margin="{Binding POS, Converter={StaticResource DPIConverter}}" >