是否可以绑定RelativeLayout约束?

时间:2016-10-18 03:10:36

标签: xaml xamarin.forms xamarin.forms.listview

我正在使用以下XAML代码在ListView中呈现一些数据:

<ListView x:Name="myListView"
          ItemsSource="{Binding myData}"
          RowHeight="230">
    <ListView.ItemTemplate>
      <DataTemplate>
        <ViewCell>
          <ViewCell.View>
            <RelativeLayout Padding="1">
              <StackLayout x:Name="stackLayoutTitle"
                           Padding="5" 
                           Orientation="Vertical" 
                           VerticalOptions="EndAndExpand"
                           RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width}"
                           RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToParent, Property=Height, Factor=0.6}">
                <Label Text="{Binding myText}"
                       FontSize="Medium"
                       FontAttributes="Bold"
                       TextColor="Black">
                </Label>
              </StackLayout>
            </RelativeLayout>
          </ViewCell.View>
        </ViewCell>
      </DataTemplate>
    </ListView.ItemTemplate>
  </ListView>

数据呈现正常。现在,我想要做的是使用banding作为RelativeYConstranit的Factor属性,根据一些计算来定位相应的StackLayout。像这样 (参见Factor属性):

RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToParent, Property=Height, Factor={Binding someValue}}"

但是,在运行应用程序时,我收到了错误。

有谁知道是否可以使用绑定表达式?

感谢。

2 个答案:

答案 0 :(得分:0)

我有这个问题。 “因素”不是BindingProperty。因此现在是不可能的。

答案 1 :(得分:0)

我尝试了类似的操作,但未为YConstraint绑定因子,这是为什么它不起作用的说明

从文档中:

  

在C#中,相对约束定义为函数。像Factor这样的概念并不存在,但是可以手动实现。

我收到的错误消息:

  

无法分配属性“因子”:属性不存在,不可分配或值与属性之间的类型不匹配

结论: 没有可绑定的属性(请注意,它必须是一个可绑定的属性,否则您将无法绑定)基础代码中的因数,因此无法进行绑定。