Я реализую проект WP8.1 с MVVMlight. В моем проекте у меня есть несколько ViewModels (по функциям).MVVMLight: Xaml не обновляется при обновлении viewmodel
Когда My IHM загружается, привязка к ViewModels работает нормально.
Но когда я нажимаю кнопку IHM, чтобы обновить мою модель Viewmodel (я использую RelayCommand), мой IHM не обновляет поля в соответствии с моими ViewModels.
код Xaml:
<Page
x:Class="ApplicationMobileWinPhone.IHM.Test"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:ApplicationMobileWinPhone.IHM"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
DataContext="{Binding Main, Source={StaticResource Locator}}">
<Grid>
<TextBox Foreground="Black" x:Name="TextAdress" Text="{Binding mytest.A}" Margin="0,40,0,0" ></TextBox>
<Button Command="{Binding mytest.SearchCommand, Mode=OnWay}" Content="OK"
CommandParameter="{Binding Text, ElementName=TextAdress}"
BorderThickness="0" MinHeight="39" MinWidth="39" x:Name="ButtonSearch" VerticalAlignment="Bottom" Height="50" Width="32" Margin="358,-9,0,593">
</Button>
</Grid>
ViewModels Реализация:
public class Mytest : ViewModelBase
{
private RelayCommand<string> _searchCommand;
private readonly INavigationService _navigationService;
public string A
{
get;
set;
}
public Mytest(INavigationService nav)
{
_navigationService = nav;
A = "init";
}
public RelayCommand<string> SearchCommand
{
get
{
return _searchCommand
?? (_searchCommand = new RelayCommand<string>(
a =>
{
A = "modify";
}
));
}
}
}
Я не понимаю, потому что есть другие ViewModels и она отлично работает.
В вашей собственности не реализовано 'INotifyPropertyChanged'. –
Спасибо Майку! Он работает отлично! Пожалуйста, Можете ли вы объяснить мне, почему в другой viewmodel, я не реализую INotifyPropertyChanged, и он отлично работает? – DingDing
Связывание будет работать, но только один раз. Если вы затем измените свойство, представление не будет обновляться, если вы не сообщите об этом. Следовательно, 'INotifyPropertyChanged'. –