Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过触发Xamarin表单修改按钮背景_C#_Xaml_Xamarin_Xamarin.forms - Fatal编程技术网

C# 通过触发Xamarin表单修改按钮背景

C# 通过触发Xamarin表单修改按钮背景,c#,xaml,xamarin,xamarin.forms,C#,Xaml,Xamarin,Xamarin.forms,我有两个按钮。我想在单击第一个按钮时使用触发器更改第二个按钮背景色,但我无法执行此操作。我正在尝试的代码 <Button Text="button 1" x:Name="btn1" HorizontalOptions="Fill"> <Button.Triggers> <Trigger TargetType="Button" Binding="{Binding Source={x:Reference btn2} Property="IsE

我有两个按钮。我想在单击第一个按钮时使用
触发器更改第二个
按钮
背景色
,但我无法执行此操作。我正在尝试的代码

<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" />


最好的方法是使用ViewModel,而不是代码库

方法1:使用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:

<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实现这一点的方法;如果需要代码库样式,请告诉我。

最好的方法是使用ViewModel而不是代码库

方法1:使用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:

<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实现这一点的方法;如果您想要代码库样式,请告诉我。

您是使用MVVM还是完全基于代码库?@NirmalSubedi-是的,我使用MVVM,但对于这个特定任务,MVVM有大量代码,因此我决定使用触发器。按钮1被单击的逻辑是否正确,因此按钮2的背景是某种颜色?如果你不知道你正在尝试做什么,就很难推荐一种方法。您有一些选项,您可以查看按钮或不同类型触发器的可视状态管理器。@Neil-在按钮上单击1我想更改按钮2 bg颜色。您是使用MVVM还是完全基于代码?@NirmalSubedi-是的,我使用MVVM,但是对于这个特定的任务,mvvm有大量的代码,所以我决定使用触发器。按钮1被点击的逻辑是什么,那么按钮2的背景是什么颜色?如果你不知道你正在尝试做什么,就很难推荐一种方法。您有一些选项,您可以在可视状态管理器中查看按钮或不同类型的触发器。@Neil-On button1单击我想要更改按钮2 bg颜色。回答得好。帮助我。你也可以为你的按钮定义一个基本样式,并且只使用值为True的DataTrigger来覆盖该样式。回答得好。帮助我。您还可以为按钮定义基本样式,并且仅使用值为True的DataTrigger来覆盖该样式。