c# - 如何将我的 Entry 值绑定到我的 ViewModel.cs?
问题描述
嘿,我对 Xamarin 很陌生,我想从一个简单的方法开始,它有 3 个条目,该方法将在计算 3 个输入数字的平均值的函数“CalculateAv(Entry1,Entry2,Entry3)”中读取。不知何故,参数中的条目是未定义的,可能 bc 绑定没有很好地工作。这里有一些代码: BasicButtonCommandPage.xaml
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:ButtonDemos;assembly=ButtonDemos"
x:Class="ButtonDemos.BasicButtonCommandPage"
Title="Basic Button Command">
<ContentPage.BindingContext>
<local:CommandDemoViewModel />
</ContentPage.BindingContext>
<ContentPage.Resources>
<ResourceDictionary>
<local:CommandDemoViewModel x:Key="model" />
<local:DoubleToStringConverter x:Key="stringConverter" />
<local:DoubleRoundingConverter x:Key="roundConverter" />
</ResourceDictionary>
</ContentPage.Resources>
<StackLayout>
<Label x:Name="Ausgabe"
Text="{Binding Number, StringFormat='Value is now {0}'}"
FontSize="Large"
VerticalOptions="CenterAndExpand"
HorizontalOptions="Center" />
<Entry x:Name="Number1"
Placeholder="Number1"
Keyboard="Numeric"
BindingContext="{x:Reference Rechner}"
Text="{Binding Path=CommanDemoViewModelProperty[modal].ErsteNummer}" />
<Entry x:Name="Number2"
Placeholder="Number2"
Keyboard="Numeric"
BindingContext="{x:Reference Rechner}"
Text="{Binding Path=CommanDemoViewModelProperty[modal].ZweiteNummer}" />
<Entry x:Name="Number3"
Placeholder="Number3"
Keyboard="Numeric"
BindingContext="{x:Reference Rechner}"
Text="{Binding Path=CommanDemoViewModelProperty[modal].DritteNummer}" />
<Button x:Name="Rechner"
Text="Multiply by 2"
VerticalOptions="CenterAndExpand"
HorizontalOptions="Center"
Command="{Binding MultiplyBy2Command}" />
<!--CommandParameter="{Binding Number1, Number2, Number3}" />-->
<Button Text="Divide by 2"
VerticalOptions="CenterAndExpand"
HorizontalOptions="Center"
Command="{Binding DivideBy2Command}" />
</StackLayout>
</ContentPage>
这里是 CommanDemoViewModel.cs
namespace ButtonDemos
{
class CommandDemoViewModel : INotifyPropertyChanged
{
double number = 2;
double ersteNummer, zweiteNummer, dritteNummer;
BindableProperty.Create()
public event PropertyChangedEventHandler PropertyChanged;
public double ErsteNummer
{
set
{
if (ersteNummer != value)
{
ersteNummer = value;
OnPropertyChanged("ErsteNummer");
}
}
get
{
return ersteNummer;
}
}
public double ZweiteNummer
{
set
{
if (zweiteNummer != value)
{
zweiteNummer = value;
OnPropertyChanged("ZweiteNummer");
}
}
get
{
return zweiteNummer;
}
}
public double DritteNummer
{
set
{
if (dritteNummer != value)
{
dritteNummer = value;
OnPropertyChanged("DritteNummer");
}
}
get
{
return dritteNummer;
}
}
public double Number
{
set
{
if (number != value)
{
number = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Number"));
}
}
get
{
return number;
}
}
protected void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
void CalculateAv(double ersteNummer, double zweiteNummer, double dritteNummer)
{
List<double> grades = new List<double> { ersteNummer, zweiteNummer, dritteNummer };
Number = grades.Average();
}
public CommandDemoViewModel()
{
MultiplyBy2Command = new Command(
execute: () => CalculateAv(ersteNummer, zweiteNummer, dritteNummer));
DivideBy2Command = new Command(() => Number /= 2);
}
public ICommand MultiplyBy2Command { private set; get; }
public List<int> grades { get; set; }
public ICommand DivideBy2Command { private set; get; }
public string Path { get; set; }
}
}
请不要对按钮的名称感到恼火,因为它是来自 xamarin.forms 的示例。谢谢大家!
解决方案
您的条目绑定不正确。
Number1 应如下所示
Text="{Binding ErsteNummer, Mode=TwoWay}" />
推荐阅读
- c# - 从数据库中删除一条记录
- ios - 加载 Webview 时显示图像
- java - RecyclerView 在其他视图之上没有触摸事件(覆盖)
- python - 有效地在 python 列表中查找 nlargest 元素的索引
- pandas - 尝试在传递的数组中调试混合的日期时间和整数
- c# - Xamarin 形成新的解决方案启动
- node.js - 在初始连接之外使用时,Socket IO 客户端不会发出
- android - 防止矢量图像变形
- mysql - 在Mysql中查找存储在字符串中的多个id
- javascript - '(dispatch: Dispatch 类型的参数
, ownProps: OwnProps) => DispatchProps' 不可分配给“DispatchProps”类型的参数