如何在 F# 中编写 WPF 用户控件?
How to write a WPF user control in F#?
可以用 F# 编写 WPF 用户控件吗?
假设我有一个标准的 WPF/C# 用户控件:
public class DataGridAnnotationControl : UserControl
{
static DataGridAnnotationControl()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(DataGridAnnotationControl), new FrameworkPropertyMetadata(typeof(DataGridAnnotationControl)));
}
public DataGridAnnotationControl()
{
BorderBrush = Brushes.Black;
Background = Brushes.AliceBlue;
BorderThickness = new Thickness(20, 20, 20, 20);
}
public string LastName
{
get { return (string)GetValue(LastNameProperty); }
set { SetValue(LastNameProperty, value); }
}
public static readonly DependencyProperty LastNameProperty =
DependencyProperty.Register("LastName", typeof(string), typeof(DataGridAnnotationControl), new PropertyMetadata(string.Empty));
}
这在 F# 中是如何编码的?
TIA
一般来说,在 F# 中创建用户控件(没有库)通常与在 C# 中创建完全不同。
主要问题是您不能使用部分 类,因此设计器将无法运行。即使您放弃设计器,具有 XAML 个文件的典型工作流程也无法正常工作。要在“纯”F# 中执行此操作,您通常需要在代码中编写 UI 而不是在 XAML 中编写并允许生成的 InitializeComponent()
方法将它们连接在一起。
但是,一种更“自然”的方法是使用 FsXaml. It allows you to write user controls directly which become usable in a similar way to C# developed ones. This is done via a type provider and overriding the default information。
可以用 F# 编写 WPF 用户控件吗?
假设我有一个标准的 WPF/C# 用户控件:
public class DataGridAnnotationControl : UserControl
{
static DataGridAnnotationControl()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(DataGridAnnotationControl), new FrameworkPropertyMetadata(typeof(DataGridAnnotationControl)));
}
public DataGridAnnotationControl()
{
BorderBrush = Brushes.Black;
Background = Brushes.AliceBlue;
BorderThickness = new Thickness(20, 20, 20, 20);
}
public string LastName
{
get { return (string)GetValue(LastNameProperty); }
set { SetValue(LastNameProperty, value); }
}
public static readonly DependencyProperty LastNameProperty =
DependencyProperty.Register("LastName", typeof(string), typeof(DataGridAnnotationControl), new PropertyMetadata(string.Empty));
}
这在 F# 中是如何编码的?
TIA
一般来说,在 F# 中创建用户控件(没有库)通常与在 C# 中创建完全不同。
主要问题是您不能使用部分 类,因此设计器将无法运行。即使您放弃设计器,具有 XAML 个文件的典型工作流程也无法正常工作。要在“纯”F# 中执行此操作,您通常需要在代码中编写 UI 而不是在 XAML 中编写并允许生成的 InitializeComponent()
方法将它们连接在一起。
但是,一种更“自然”的方法是使用 FsXaml. It allows you to write user controls directly which become usable in a similar way to C# developed ones. This is done via a type provider and overriding the default information。