aardio 文档
aardio 范例: 嵌入 WPF 控件 DataGrid
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio 嵌入 WPF 控件 DataGrid";right=759;bottom=469)
winform.add(
custom={cls="custom";left=12;top=11;right=751;bottom=460;db=1;dl=1;dr=1;dt=1;z=1}
)
/*}}*/
// 加载相关程序集并导入 .NET 命名空间
import System.Windows.Forms.Integration; // WPF 必须导入这个库
//创建 WPF 宿主控件
var elementHost = System.Windows.Forms.Integration.ElementHost(winform.custom);
var xaml = `
<DataGrid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
x:Name="grid" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
AutoGenerateColumns="False" CanUserAddRows="False"
AlternatingRowBackground="#F5F5F5">
<DataGrid.Columns>
<DataGridTextColumn Header="姓名" Binding="{Binding Name}" Width="100"/>
<DataGridTextColumn Header="年龄" Binding="{Binding Age}" Width="60"/>
<DataGridTextColumn Header="城市" Binding="{Binding City}" Width="*"/>
<DataGridCheckBoxColumn Header="在职" Binding="{Binding Active}" Width="50"/>
</DataGrid.Columns>
</DataGrid>
`;
//解析 XAML 返回 WPF 控件
var grid = System.Windows.Markup.XamlReader.Parse(xaml);
// 添加数据(使用 System.Dynamic.ExpandoObject 动态创建对象)
import System.Dynamic; //必须自标准库导入这个库
//第一种写法:
/*
var items = System.Dynamic.ExpandoObject.ObservableCollection();
for(i=1;10){
var row = System.Dynamic.ExpandoObject({
Name = "用户" ++ i;
Age = 20 + i;
City = ({"北京";"上海";"广州";"深圳"})[(i-1)%4+1];
Active = i%2==0;
});
items.Add(row);
}
*/
//第二种写法:
var array = [];
for(i=1;10){
array[i] = {
Name = "用户" ++ i;
Age = 20 + i;
City = ({"北京";"上海";"广州";"深圳"})[(i-1)%4+1];
Active = i%2==0;
}
}
var items = System.Dynamic.ExpandoObject.ObservableCollection(array);
grid.ItemsSource = items;
//将 WPF 控件添加到窗口上
elementHost.Child = grid;
winform.show();
win.loopMessage();
Markdown 格式