通过触发 Xamarin 表单修改按钮背景
问题描述:
我有两个按钮.我想更改第二个 Button
BackgroundColor
使用 Triggers
当我点击第一个按钮但我无法做到.我正在尝试的代码
I have two buttons. I want change second Button
BackgroundColor
using Triggers
When I click first button but I am unable to do it. The code I am trying
<Button Text="button 1" x:Name="btn1" HorizontalOptions="Fill">
<Button.Triggers>
<Trigger TargetType="Button" Binding="{Binding Source={x:Reference btn2} Property="IsEnabled">
<Setter Property="BackgroundColor" Value="Red"></Setter>
</Trigger>
</Button.Triggers>
</Button>
<Button Text="button 2" x:Name="btn2" HorizontalOptions="Fill" />
我什至不知道在哪里为此编写点击事件.
I even have no idea where to write click event for this.
答
最好的方法是使用 ViewModel 而不是代码库.
The best way to do that is to use ViewModel rather than the Code base.
方法一:使用ViewModel
public class YourViewModel : BaseViewModel
{
public ICommand Button1Command { get; set; }
private bool _enableButton2;
public bool EnableButton2
{
get
{
return _enableButton2;
}
set
{
_enableButton2= value;
RaisePropertyChanged();
}
}
public YourViewModel()
{
Button1Command =new Command(Button1Clicked);
}
private void Button1Clicked()
{
EnableButton2=true; //Whenever you need to enable or disable set it true/false
}
}
现在你有了你的 ViewModel,你需要像这样实现你的 UI:
Now you have your ViewModel, You need to implement your UI like this :
<Button x:Name="button1" Text="Button 1" Command="{Binding Button1Command }" />
<Button x:Name="button2" Text="Button 2">
<Button.Triggers>
<DataTrigger TargetType="Button" Binding="{Binding EnableButton2}" Value="false">
<Setter Property="BackgroundColor" Value="#dbe1e5" />
<Setter Property="TextColor" Value="#bfcfd5" />
</DataTrigger>
<DataTrigger TargetType="Button" Binding="{Binding EnableButton2" Value="true">
<Setter Property="BackgroundColor" Value="Red" />
<Setter Property="TextColor" Value="#FFFFFF" />
</DataTrigger>
</Button.Triggers>
</Button>
这是执行此操作的 MVVM 方式;如果您想要代码库样式,请告诉我.
This is the MVVM way to do this; let me know if you want Code Base style.