2013-10-08 3 views
0

У меня есть следующий класс, который реализует INotifyPropertyChangedКак установить datacontext для класса для usercontrol в XAML?

updateNotify.cs

public class updateNotify : INotifyPropertyChanged 
{ 

    private DateTime? previousUpdate; 
    private DateTime? nextUpdate; 

    public event PropertyChangedEventHandler PropertyChanged; 

    public updateNotify() 
    { 
    } 

    public updateNotify(DateTime? value) 
    { 
     this.previousUpdate = value; 
    } 

    public DateTime? GASpreviousUpdate 
    { 
     get { return previousUpdate; } 
     set 
     { 
      previousUpdate = value; 
      // Call OnPropertyChanged whenever the property is updated 
      OnPropertyChanged("GASpreviousUpdate"); 
     } 
    } 

    public DateTime? GASnextUpdate 
    { 
     get { return nextUpdate; } 
     set 
     { 
      nextUpdate = value; 
      // Call OnPropertyChanged whenever the property is updated 
      OnPropertyChanged("GASnextUpdate"); 
     } 
    } 

    // Create the OnPropertyChanged method to raise the event 
    protected void OnPropertyChanged(string name) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (handler != null) 
     { 
      handler(this, new PropertyChangedEventArgs(name)); 
     } 
    } 
} 

MainWindow.xaml.cs

public partial class MainWindow 
    { 
     private updateNotify properties = new updateNotify(); 

''' 

     public void start_dispatcherTimer() 
     { 
      dispatcherTimer.Stop(); 
      DateTime timeNow = DateTime.Now; 
      properties.GASpreviousUpdate = timeNow; 
      properties.GASnextUpdate = timeNow.AddMinutes((double)Properties.Settings.Default.GASInterval); 
      dispatcherTimer.Start(); 
     } 

    } 

затем в XAML

<UserControl x:Class="ProjectXYZ.Content.MainData" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d" d:DesignWidth="300" Height="400" > 
.... 
       <StackPanel> 
        <Label Content="Previous Refresh" Target="{Binding ElementName=PreviousRefresh}"/> 
        <TextBox x:Name="PreviousRefresh" Width="140" Text="{Binding Path=GASpreviousUpdate, Mode=OneWay}"/> 
       </StackPanel> 
       <StackPanel> 
        <Label Content="Next Refresh" Target="{Binding ElementName=NextRefresh}"/> 
        <TextBox x:Name="NextRefresh" Width="140" Text="{Binding Path=GASnextUpdate, Mode=OneWay}"/> 
       </StackPanel> 

</UserControl> 

но Textboxes не обновляются в пользовательском интерфейсе для Text="{Binding Path=GASpreviousUpdate, Mode=OneWay}" и Text="{Binding Path=GASnextUpdate, Mode=OneWay}"

Я думаю, что нужно установить DataContext, но не знаете, как это сделать в UserControl XAML. Пожалуйста, может кто-нибудь указать мне в правильном направлении?

+0

Слишком долго, не читал. – franssu

ответ

2

попробовать:

public partial class MainWindow 
{ 
    public MainWindow() 
    { 
     this.DataContext = this.properties; // <---- 
    } 
} 

Я бы не назвал поле properties

Смежные вопросы