gpt4 book ai didi

c# - 在设计时将数据绑定(bind)到 DataGrid

转载 作者:行者123 更新时间:2023-11-30 22:39:28 24 4
gpt4 key购买 nike

我正在学习 XAML,这是一个基本问题。
我想绑定(bind)数据,以便在设计时通过 XAML 生成数据(在运行时它工作正常)。

XAML

<Window x:Class="GridTest.MainWindow"
Name="This"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Height="350"
Width="525">
<Grid>
<DataGrid AutoGenerateColumns="False"
Height="200"
Width="308"
HorizontalAlignment="Left"
Margin="25,23,0,0"
Name="dataGrid1"
VerticalAlignment="Top"
ItemsSource="{Binding ElementName=This, Path=MyData}">
<DataGrid.Columns>
<DataGridTextColumn Header="No"
Width="Auto"
Binding="{Binding Id}"
IsReadOnly="True" />
<DataGridTextColumn Header="Title"
Binding="{Binding Title}"
IsReadOnly="True" />
<DataGridTextColumn Header="Description"
Binding="{Binding Description}"
IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>

代码隐藏

public partial class MainWindow : Window
{
public List<Item> MyData
{
get
{
return myData;
}

}
List<Item> myData;

public MainWindow()
{
myData = new List<Item>
{
new Item{ Id=5, Description="Brown Car", Title="my car"},
new Item{Id=1,Description="sweet dog", Title="my dog"},
};
InitializeComponent();
}
}

public class Item
{
public string Title
{
set;
get;
}
public string Description
{
set;
get;
}
public int Id
{
set;
get;
}
}

最佳答案

顺序如下:

1) 将代码从 MainWindow 类移动到自定义类并设置 DataContext 属性:

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();

this.DataContext = new MainWindowViewModel();
}
}

public class MainWindowViewModel
{
public MainWindowViewModel()
{
myData = new List<Item>
{
new Item{ Id=5, Description="Brown Car", Title="my car"},
new Item{Id=1,Description="sweet dog", Title="my dog"},

};
}

public List<Item> MyData
{
get
{
return myData;
}

}
List<Item> myData;
}

2) 更改 DataGrid 的绑定(bind):

ItemsSource="{Binding MyData}"

3) 添加名为 DataGridSample.xaml 的新 ResourceDictionary,打开其属性(右键单击 -> 属性),将 BuildAction 属性设置为 DesignData 并清除CustomTool 属性的值。

4) 复制此代码,但将命名空间 vmWpfApplication1 更改为您的:

<vm:MainWindowViewModel xmlns:vm="clr-namespace:WpfApplication1">
<vm:MainWindowViewModel.MyData>
<vm:Item Id="1" Title="My dog" Description="Sweet dog" />
<vm:Item Id="5" Title="My car" Description="Brown car" />
</vm:MainWindowViewModel.MyData>
</vm:MainWindowViewModel>

5) 返回到 MainWindow.xaml 并将下一行添加到 Window 元素,其中所有声明都是:

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DataContext="{d:DesignData Source=DataGridSample.xaml}"

之后你可以切换到设计模式,你会看到有两行的数据网格。

关于c# - 在设计时将数据绑定(bind)到 DataGrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5693283/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com