プロパティ グリッドに DateTime 型のプロパティがあります。コードは次のとおりです。
XAML
<xctk:PropertyGrid x:Name="_propertyGrid" Margin="10" AutoGenerateProperties="True" SelectedObject="{Binding}">
</xctk:PropertyGrid>
C#
public class DateEditor : Xceed.Wpf.Toolkit.PropertyGrid.Editors.ITypeEditor
{
public FrameworkElement ResolveEditor(Xceed.Wpf.Toolkit.PropertyGrid.PropertyItem propertyItem)
{
DateTimeUpDown temp1 = new DateTimeUpDown();
temp1.Format = DateTimeFormat.Custom;
temp1.FormatString = "dd.MM.yyyy hh:m:ss";
//create the binding from the bound property item to the editor
var _binding = new Binding("Value"); //bind to the Value property of the PropertyItem
_binding.Source = propertyItem;
_binding.ValidatesOnExceptions = true;
_binding.ValidatesOnDataErrors = true;
_binding.Mode = BindingMode.TwoWay;
BindingOperations.SetBinding(temp1, DateTimeUpDown.TextProperty, _binding);
return temp1;
}
}
public class CustomAttributEditorPerson : INotifyPropertyChanged
{
private DateTime FDate;
[Category("Information")]
[DisplayName("Date")]
//This custom editor is a Class that implements the ITypeEditor interface
[RefreshProperties(RefreshProperties.All)]
[Editor(typeof(FirstNameEditor), typeof(FirstNameEditor))]
public DateTime Date
{
get
{
return this.FDate;
}
set
{
this.FDate = value;
NotifyPropertyChanged("Date");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
}
public partial class MainWindow : Window
{
CustomAttributEditorPerson temp = new CustomAttributEditorPerson();
public MainWindow()
{
InitializeComponent();
temp.Date = new DateTime(2020, 7, 7, 0, 1, 2);
_propertyGrid.SelectedObject = temp;
}
アプリを起動すると、必要な 7.7.2020 ではなく現在の日付が表示されます。プロパティ temp.Date の変更がプロパティ グリッドに反映されません。次のコードは結果につながりません。
C#
private void Button_Click_1(object sender, RoutedEventArgs e)
{
temp.Date = new DateTime(2030, 8, 7, 0, 1, 2);
_propertyGrid.Update();
}
propertygrid で tempDate の変更を反映するにはどうすればよいですか? 助けてくれてありがとう。