sup*_*erd 3 xaml xamarin xamarin.forms
我正在尝试更改 Xamairn 中复选框的状态。
我的 Xaml 代码
<StackLayout Orientation="Horizontal">
<CheckBox VerticalOptions="Start"
IsChecked="{Binding IsChecked,Mode=TwoWay}">
<CheckBox.Margin>
<OnPlatform x:TypeArguments="Thickness">
<On Platform="iOS" Value="0,-10,0,0" />
<On Platform="Android, WinPhone, Windows" Value="0,-5,0,0" />
</OnPlatform>
</CheckBox.Margin>
</CheckBox>
<Label VerticalTextAlignment="Center" VerticalOptions="Start"
Text="{Binding Text}">
<Label.GestureRecognizers>
<TapGestureRecognizer>
</TapGestureRecognizer>
</Label.GestureRecognizers>
</Label>
</StackLayout>
Run Code Online (Sandbox Code Playgroud)
我知道我以前做过这个,但我忘记了。
我必须在 TapGestureRecognizer 中添加一个 setter 或其他东西,以使 Checkbox IsChecked=True 和 IsChecked=False 当它为 True 时
要以 MVVM 方式执行此操作,您正在寻找的是Command.
在您的 ViewModel 中添加命令:
public ICommand ChangeStateCommand { get; set; }
Run Code Online (Sandbox Code Playgroud)
并在构造函数中初始化它:
ChangeStateCommand = new Command(() => IsChecked = !IsChecked);
Run Code Online (Sandbox Code Playgroud)
然后你需要将它与 TapGestureRecognizer你的Label.
<StackLayout Orientation="Horizontal" VerticalOptions="CenterAndExpand">
<CheckBox VerticalOptions="Start"
IsChecked="{Binding IsChecked,Mode=TwoWay}">
<CheckBox.Margin>
<OnPlatform x:TypeArguments="Thickness">
<On Platform="iOS" Value="0,-10,0,0" />
<On Platform="Android, WinPhone, Windows" Value="0,-5,0,0" />
</OnPlatform>
</CheckBox.Margin>
</CheckBox>
<Label VerticalTextAlignment="Center" VerticalOptions="Start"
Text="{Binding Text}" >
<Label.GestureRecognizers>
<TapGestureRecognizer Command="{Binding ChangeStateCommand}" />
</Label.GestureRecognizers>
</Label>
</StackLayout>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。-
| 归档时间: |
|
| 查看次数: |
1739 次 |
| 最近记录: |