微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Xamarin Forms 忽略来自 StackLayout 上 DataType 的按钮绑定

如何解决Xamarin Forms 忽略来自 StackLayout 上 DataType 的按钮绑定

我有以下 xaml 代码

            <StackLayout Padding="10" x:DataType="model:Light">
                    <StackLayout HorizontalOptions="FillAndExpand" Grid.Column="0" Grid.Row="1">
                        <Label Text="{Binding Name}" LineBreakMode="Nowrap" Style="{DynamicResource ListItemTextStyle}" FontSize="24" HorizontalOptions="StartAndExpand"  VerticalOptions="StartAndExpand"/>
                    </StackLayout>
                    <StackLayout HorizontalOptions="FillAndExpand" Grid.Column="1" Grid.Row="1" >
                        <Button Text="{Binding Enabled}" Command="{Binding ToggleLight}" CommandParameter="{Binding .}" HorizontalOptions="CenterandExpand"></Button>
                    </StackLayout>
            </StackLayout>

如何在我的 Button 表单上排除 Command="{Binding ToggleLight}" 和 StackLayout 上定义的 x:DataType="model:Light"

解决方法

使用binding-path

  1. 在 StackLayout 之外定义“x:Name”(StackLayout、Grid、ListView 等)
  2. 为 StackLayout 内的 Command 绑定添加“x:Reference”
  3. 该命令被排除。

喜欢:

<Grid x:Name="WhateverParent">
    <StackLayout x:DataType="model:Light">
        <Button ... Command="{Binding Path=BindingContext.ToggleLight,Source={x:Reference WhateverParent}}" />
    </StackLayout>
</Grid>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。