gpt4 book ai didi

c# - 如何将 View 的 BackgroundColor 属性绑定(bind)到 Xamarin Forms 中的 View 模型?

转载 作者:行者123 更新时间:2023-12-03 10:31:36 26 4
gpt4 key购买 nike

因此,我正在使用 Fresh MVVM 在 Xamarin Forms 中制作应用程序,并且我希望在按下按钮时执行事件,并且仅当按钮的 BackgroundColor 为白色时。
按钮的 backgroundColor 将在 XAML.CS 中更改,而此事件将在 ViewModel 中发生。

问题是,在我拥有 ViewModel 属性的当前代码中,所有原色和属性都设置为 0,而不是实际的按钮颜色属性。我已经在寻找答案,但没有任何帮助。

下面是 XAML 代码:

<Button
x:Name="Button_NextStep"
HeightRequest="50"
WidthRequest="400"
BackgroundColor="{Binding NextStepBackgroundColor}"
CornerRadius="30"

Text="Next step"
TextColor="#4847FF"
FontAttributes="Bold"
FontSize="20"

VerticalOptions="Start"
HorizontalOptions="Start"
Margin="25,178,25,5"

Command="{Binding NextStep}"
></Button>

View 模型代码:
class CreateAccount_UsernameViewModel: FreshBasePageModel
{
public ICommand NextStep { get; set; }
public Color NextStepBackgroundColor { get; set; }

public InavigationService navigationService; //this is irrelevant for this question

public CreateAccount_UsernameViewModel(InavigationService _navService)
{
navigationService = _navService; //this is irrelevant for this question

NextStep = new Command(() =>
{
if (NextStepBackgroundColor == Color.FromHex("#FFD3D3D3"))
navigationService.SwitchNavigationStacks(Enums.NavigationStacks.CreateAccount, this); //this is irrelevant for this question
});
}
}

仅此而已,如果您需要更多信息来促进解决方案,我会在看到您的请求后立即提供给您。谢谢大家的时间,希望你有一个美好的一天。

最佳答案

主要的绑定(bind)模式是 - (期望一次性和默认(从名称不言自明))

  • OneWay = ViewModel 中的值更改设置为 View(此处按钮)。这是大多数属性的默认设置。
  • TwoWay = ViewModel 和 View 中的值更改都会得到通知。这设置为从源端更改的属性,例如 Text Entry 的属性(property), SelectedItem ListView 的属性(property), 等等。
  • OneWayToSource = View 中的值更改会通知给 ViewModel,但 ViewModel 中的值更改不会通知给 View。

  • 您的方案中的问题是 BindingModeBackgroundColor Button 的属性(property)是 OneWay默认情况下,保留 BindingMode 也是没有意义的。的 BackgroundColorButtonTwoWay因为该值不会从控制端改变。

    但是 BackgroundColor 的变化属性必须反射(reflect)在 ViewModel 中,因此 BindingMode 必须设置为 OneWayToSource .

    关于c# - 如何将 View 的 BackgroundColor 属性绑定(bind)到 Xamarin Forms 中的 View 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60374871/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com