FrameworkElementFactory中的SetBinding与SetValue

public static Microsoft.Windows.Controls.DataGridColumn CreateDateColumn(string path, string header)
        {
            ExtendedDataGridTemplateColumn<Microsoft.Windows.Controls.DatePicker> gridTemplateColumn =
                new ExtendedDataGridTemplateColumn<Microsoft.Windows.Controls.DatePicker>();
            DataTemplate dataTemplate = new DataTemplate();
            FrameworkElementFactory frameworkElementFactory =
                new FrameworkElementFactory(typeof(Microsoft.Windows.Controls.DatePicker));
            frameworkElementFactory.SetBinding(Microsoft.Windows.Controls.DatePicker.SelectedDateProperty, new Binding()
            {
                Path = new PropertyPath(path),
                Mode = BindingMode.TwoWay,
                UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
            });
            dataTemplate.VisualTree = frameworkElementFactory;
            gridTemplateColumn.MinWidth = 100.0;
            gridTemplateColumn.Width = 140.0;
            gridTemplateColumn.Header = header;
            gridTemplateColumn.CellEditingTemplate = dataTemplate;
            gridTemplateColumn.CellTemplate = createDataTimeTextBolckCellTemplate(path);
            return gridTemplateColumn;
        }


private static DataTemplate createDataTimeTextBolckCellTemplate(string path)
        {
            DataTemplate dataTemplate = new DataTemplate();
            FrameworkElementFactory frameworkElementFactory = new FrameworkElementFactory(typeof(TextBlock));
            Binding binding = new Binding();
            binding.Path = new PropertyPath(path);
            
            binding.StringFormat = "yyyy-MM-dd";
            
            binding.Mode = BindingMode.OneWay;
            frameworkElementFactory.SetBinding(TextBlock.TextProperty, binding);
            frameworkElementFactory.SetValue(FrameworkElement.VerticalAlignmentProperty, VerticalAlignment.Center);
            frameworkElementFactory.SetValue(FrameworkElement.HorizontalAlignmentProperty, HorizontalAlignment.Center);
            
            dataTemplate.VisualTree = frameworkElementFactory;
            return dataTemplate;
        }
原文地址:https://www.cnblogs.com/sesametech-netcore/p/13848019.html