У меня есть модель просмотра, которая загружает некоторые данные. При загрузке DependencyProperty установлено значение true, а позже false. Я часто делал это в WPF, но с современными приложениями он не работает. :(Связывание WinRT, пользовательский интерфейс не обновляется
мнение, что связано с моделью должна показывает, если модель еще грузится. Это просто показывает значение при загрузке страницы, но не обновляет вид после изменения значения.
Я написал небольшой пример, который использует SharedProjects для телефона, Modern App и WPF. (BindingExample)
для целей тестирования он просто переключается между истинным и ложным.
XAML
<Page
x:Class="App2.BlankPage1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App2"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid >
<TextBlock Text="{Binding Loading, Mode=OneWay}" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="30" Width="100" Height="100"/>
</Grid>
</Page>
конструктору Page
public BlankPage1()
{
var v = new Viewmodle();
this.InitializeComponent();
this.DataContext = v;
v.Test();
}
Viewmodle:
public class Viewmodle : DependencyObject
{
public bool Loading
{
get { return (bool)GetValue(LoadingProperty); }
set { SetValue(LoadingProperty, value); }
}
// Using a DependencyProperty as the backing store for Loading. This enables animation, styling, binding, etc...
public static readonly DependencyProperty LoadingProperty =
DependencyProperty.Register("Loading", typeof(bool), typeof(Viewmodle), new PropertyMetadata(false));
public async void Test()
{
while (true)
{
await System.Threading.Tasks.Task.Delay(1000);
this.Loading = true;
await System.Threading.Tasks.Task.Delay(1000);
this.Loading = false;
}
}
}