2012-12-19 51 views
2

我想是這樣的:如何使用綁定獲取DateTime值? (WPF的MVVM)

<DatePicker SelectedDate="{Binding StartDate}" /> 

對此有任何控制或簡單的解決方案? (我使用MVVM。)

+0

你問一個DatePicker控件?或者你在問如何使用DateTime進行綁定?可能需要澄清你的問題。 – Tim

+0

如果不清楚,我很抱歉。我問如何做一個DateTime類型的綁定,如WPF Toolkit DateTimePicker。 – BlackCat

回答

5

在這種情況下,您必須在ViewModel中只有屬性StartDate,它將工作。

而當您在DatePicker中更改日期時,它將自動反映在ViewModel類中的屬性StartDate中。

簡單視圖模型:

class MainViewModel : INotifyPropertyChanged 
    { 
     private DateTime _startDate = DateTime.Now; 
     public DateTime StartDate 
     { 
      get { return _startDate; } 
      set { _startDate = value; OnPropertyChanged("StartDate"); } 
     } 

     public event PropertyChangedEventHandler PropertyChanged; 
     public void OnPropertyChanged(string name) 
     { 
      PropertyChangedEventHandler handler = PropertyChanged; 
      if (handler != null) 
       handler(this, new PropertyChangedEventArgs(name)); 
     } 
    } 

簡單看法:

<Window x:Class="SimpleBinding.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" 
     Title="MainWindow" Height="350" Width="525"> 
    <StackPanel>  
     <DatePicker SelectedDate="{Binding StartDate}" />   
    </StackPanel> 
</Window> 

代碼隱藏:

public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent();   
      this.DataContext = new MainViewModel(); 
     }   
    } 
1

請參閱WPF Toolkit(注意:CodePlex在撰寫本文時爲慢/慢)。