【发布时间】:2019-03-19 17:13:14
【问题描述】:
所以我最近刚刚将较大的应用程序项目结构重新设计为 MVVM,但是,我正在尝试进行简单的标签绑定,但我根本无法进行任何工作。我可能只是有点愚蠢并且在这里遗漏了一个明显的东西,但我无法弄清楚这一点。我目前没有尝试在 ObservableCollection 中执行此操作,因为目前我什至无法获得基础知识。只是一个简单的标签。
我的 TaskModel 类包含
public class TaskModel
{
public string Title { get; set; }
}
我的 MainViewModel 包含
public class MainViewModel
{
TaskModel task = new TaskModel
{
Title = "Hello"
};
}
我的 MainPage Xaml 包含
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:Testing"
x:Class="Testing.MainPage"
xmlns:bc="clr-namespace:Testing.ViewModels">
<ContentPage.Padding>
<OnPlatform x:TypeArguments="Thickness"
iOS="0, 20, 0, 0"
Android="0, 40, 0, 0">
</OnPlatform>
</ContentPage.Padding>
<StackLayout BindingContext="{x:Reference Slider}" HorizontalOptions="Center" VerticalOptions="Center">
<BoxView Color="Green" Opacity="{Binding Value}"></BoxView>
<Label BindingContext="{x:Reference Slider}" Text="{Binding
Value,
StringFormat='Value is {0:F2}'}"
Opacity="{Binding Value}">
</Label>
<Slider x:Name="Slider" ></Slider>
<Label Text="{Binding TaskModel.Hello}"></Label>
</StackLayout>
然后我的 MainPage.Xaml.CS 包含
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
BindingContext = new MainViewModel();
}
}
如您所见,没有什么特别的。感觉有点愚蠢,我无法解决这个问题,非常感谢您对此事的任何帮助!
编辑:
忽略额外的 XAML,底部标签上方的 XAML 只是我在同一个 XAML 页面中测试其他绑定,这是有效的,如果你明白我的意思,只是试图让它绑定到页面之外.
【问题讨论】:
-
当您更改父母的 BindingContext 时,它会更改您孩子的上下文。您更改了 StackLayout 的上下文。 2. 绑定不适用于私有属性,并且您的 ViewModel 中有私有字段。您的 viewModel 没有 NotifyPropertyChanged。