Mam projekt, w którym wiążę właściwość IsChecked pola wyboru z get/set w codebehind. Jednak po załadowaniu aplikacji nie aktualizuje się z jakiegoś powodu. Zaintrygowany, pozbawiono go do jego podstawy, tak:WPF DataBinding nie aktualizuje?
//using statements
namespace NS
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private bool _test;
public bool Test
{
get { Console.WriteLine("Accessed!"); return _test; }
set { Console.WriteLine("Changed!"); _test = value; }
}
public MainWindow()
{
InitializeComponent();
Test = true;
}
}
}
XAML:
<Window x:Class="TheTestingProject_WPF_.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Grid>
<Viewbox>
<CheckBox IsChecked="{Binding Path=Test, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</Viewbox>
</Grid>
A oto i oto, kiedy ustawić go na true, to nie aktualizuje !
Ktoś może wymyślić poprawkę lub wyjaśnić dlaczego?
Dzięki, byłoby to docenione.
Przeczytaj [materiał wprowadzający ] (http://msdn.microsoft.com/en-us/library/ms752347.aspx). –
Nie sądzę, żebym zasłużył sobie na awans, ponieważ czytałem inne źródło, a nie MSDN ... –
@ofstream Nie spadłem, ale podejrzewam, że to dlatego, że to pytanie nie pokazuje żadnych wysiłków badawczych. Ten problem jest niezwykle prosty, a każdy, kto pracuje z systemem wiążącym WPF wie, że musisz zaimplementować 'INotifyPropertyChanged', aby twoje właściwości powiadomiły interfejs, aby ponownie oszacowały powiązanie, gdy zostaną zmienione. Prawie każdy samouczek WPF wprowadzający wiązania obejmuje tę koncepcję. – Rachel