问题描述
<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。
- 在 StackLayout 之外定义“x:Name”(StackLayout、Grid、ListView 等)
- 为 StackLayout 内的 Command 绑定添加“x:Reference”
- 该命令被排除。
喜欢:
<Grid x:Name="WhateverParent">
<StackLayout x:DataType="model:Light">
<Button ... Command="{Binding Path=BindingContext.ToggleLight,Source={x:Reference WhateverParent}}" />
</StackLayout>
</Grid>