这似乎很简单,但我无法让它正常工作。最简单的MAUI应用程序,标签绑定到“CountDisplay”,按钮绑定到“IncreaseCount”。命令绑定起作用,标签绑定第一次读取其值,但从未刷新。我做错了什么?谢谢你的帮助。
MainPage.xaml
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MauiApp1.MainPage"
BackgroundColor="{DynamicResource SecondaryColor}">
<ScrollView>
<Grid RowSpacing="25" RowDefinitions="Auto,Auto,Auto,Auto,*"
Padding="{OnPlatform iOS='30,60,30,30', Default='30'}">
<Label
Text="{Binding CountDisplay}"
Grid.Row="2"
FontSize="18"
FontAttributes="Bold"
HorizontalOptions="Center"
/>
<Button
Text="Click me"
FontAttributes="Bold"
Grid.Row="3"
SemanticProperties.Hint="Counts the number of times you click"
Command="{Binding IncreaseCount}"
HorizontalOptions="Center" />
</Grid>
</ScrollView>
MainPageViewModel。反恐精英
public class MainPageViewModel:BindableObject
{
public MainPageViewModel()
{
IncreaseCount = new Command(OnIncrease);
}
public ICommand IncreaseCount { get; }
int count = 0;
string countDisplay = "Click Me()!";
public string CountDisplay
{
get { return countDisplay; }
set
{
if (value == countDisplay)
return;
countDisplay = value;
OnPropertyChanged();
}
}
void OnIncrease()
{
count++;
countDisplay = $"Current count: {count}";
}
}
您正在设置私有变量(小写字母“c”)
void OnIncrease()
{
count++;
countDisplay = $"Current count: {count}";
}
相反,您需要设置public属性
(大写字母"C"),否则不调用OnProperty tyChanged
void OnIncrease()
{
count++;
CountDisplay = $"Current count: {count}";
}
一种流行的惯例是用命名私有变量,这样两个名称就更难混淆(
countDisplay
和countDisplay
)
if绑定 if绑定应用在页面元素中,并通过表达式判断是否为元素添加子元素的绑定。if绑定在功能上非常像visible绑定,但在实现上却有很大的不同。visible绑定是为元素添加css样式来控制元素是否显示,if绑定是控制元素的字元素,如果表达式为true,则为元素添加子元素,否则清空子元素。 示例代码: //.W片段 <label> <input type="checkbox" bind-c
enable绑定用来设置form中的元素是否可用,例如button、input、select等。当绑定的参数为true时元素可用。 示例代码: //.W片段 <p> <input type='checkbox' bind-checked="hasCellphone" /> I have a cellphone </p> <p> Your cellphone number: <input
数据绑定 JXML 中的动态数据来自于该 Page 的 data字段。 简单绑定 数据绑定使用 Mustache 语法(双大括号)将变量包起来,可以作用于以下: 页面内容 <view> hello {{ name }} </view> Page({ data: { name: 'cortana' } }) 组件属性(需要在双引号之内) <view id="{{id}}"> </
attr绑定是用来为html元素绑定属性值的,这种绑定非常有用,例如我们需要想一个元素添加title属性,或者为img标签添加src属性。 示例代码: //.W片段 <a bind-attr="{ href: url, title: details }"> Report </a> //js片段 this.url=justep.Bind.observable("year-end.html"),
submit绑定只能用在form元素中,当form提交的时候被触发,并且默认阻止form的提交。因此我们通常在submit的处理函数中以ajax的方式提交form表单。 示例代码: //.W片段 <form bind-submit="doSomething"> ... form contents go here ... <button type="submit">Submit</butt
with绑定用来创建一个绑定上下文,在子元素内的所有绑定都在这个上下文中进行。 示例代码: //.W片段 <h1 bind-text="city"> </h1> <p bind-with="coords"> Latitude: <span bind-text="latitude"> </span>, Longitude: <span bind-text="longitude"> </span