数据绑定到交换机



我正试图根据Switch上打开的内容来更改bool。方法在xaml.cs中工作,但我希望在ViewModel中这样做。是不是有点乱?如果是,我该怎么办?

git:https://github.com/wojblaz/Clicer-Game---final/commits/master/Clicer%20Game

在ViewModel中,我得到一个错误:";ClassicMode.ModeSelector";由于其保护级别而无法访问。

(模式选择器是开关的名称(如果没有ClassicMode(它是视图的名称(,也会发生同样的情况。

视图(Xaml(-ClassicMode:

x:Type定义好吗?`

<Switch
x:Name="ModeSelector"
IsToggled="False"
Toggled="{Binding Source={RelativeSource AncestorType={x:Type viewmodels:ClassicModelViewModel}}, Path=BindingContext.ModeSelector_ToggledCommand}"
Grid.Row="1"
Grid.Column="0"
HorizontalOptions="Center"/>

`

Xaml.cs-绑定上下文`

using Clicer_Game.ViewModels;
using CommunityToolkit.Mvvm.Input;

namespace Clicer_Game.Views;
public partial class ClassicMode : ContentPage
{
public ClassicMode()
{
InitializeComponent();
BindingContext = new ClassicModelViewModel();
}
}

`

ViewModel

`


private bool IsTime;

[RelayCommand]
private void ModeSelector_Toggled()
{
if (ClassicMode.ModeSelector.IsToggled)
{
IsTime = false;
}
else
{
IsTime = true;
}
}

`

在ModeSelector_Toggled方法中应该使用什么参数?

您可以查看此链接。详细介绍了CCD_ 1的相关内容。选择ModeSelector并按F12,您应该会看到:

private global::Microsoft.Maui.Controls.Switch ModeSelector;

访问级别为private

方法1:您可以在代码中创建一个Switch,并检查此官方代码。请记住将Switch的访问级别设为public

方法2:直接在MainPage.xaml.cs文件中写入相关代码:

public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private void Switch_Toggled(object sender, ToggledEventArgs e)
{
if (ModeSelector.IsToggled)
{
IsTime = false;
}
else
{
IsTime = true;
}
}
}

ViewModel:

pubulic static bool IsTime;

相关内容

  • 没有找到相关文章

最新更新