Dưới đây là dữ liệu XAML tinh khiết tĩnh binded vào một DataGrid:
<Window x:Class="WpfStaticDataBinding.XMLWindows"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
Title="XMLWindows" Height="152" Width="294">
<Window.Resources>
<XmlDataProvider x:Key="MockList" XPath="/MockObjects/*" >
<x:XData >
<MockObjects xmlns="">
<MockObject Name="Louis" Type="TTTT" Number="1" />
<MockObject Name="Joseph" Type="TTTT" Number="2" />
<MockObject Name="Papineau" Type="ZZZZ" Number="3" />
</MockObjects>
</x:XData>
</XmlDataProvider>
</Window.Resources>
<Grid DataContext="{Binding Source={StaticResource MockList}}">
<DataGrid HorizontalAlignment="Stretch" Margin="10" VerticalAlignment="Stretch"
ItemsSource="{Binding Mode=Default, XPath=/MockObjects/MockObject}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding [email protected]}" ></DataGridTextColumn>
<DataGridTextColumn Header="Type" Binding="{Binding [email protected]}"></DataGridTextColumn>
<DataGridTextColumn Header="Number" Binding="{Binding [email protected]}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
Kết quả:
Tôi đã không thể autogenerate cột sử dụng XmlDataProvider (tôi có thể bị thiếu một cái gì đó):
<Grid DataContext="{Binding Source={StaticResource MockList}}">
<DataGrid HorizontalAlignment="Stretch" Margin="10" VerticalAlignment="Stretch"
ItemsSource="{Binding Mode=Default, XPath=/MockObjects/MockObject}">
</DataGrid>
</Grid>
Nhưng sử dụng một mã Đằng sau lớp như Dave Đề xuất cho phép AutoBinding để làm việc và trong ý kiến của tôi là đơn giản hơn nhiều (tôi ưa thích cách tiếp cận ResourceDictionary
dù):
Code:
namespace WpfStaticDataBinding
{
public class MockRecord
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
}
}
XAML
<Window x:Class="WpfStaticDataBinding.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfStaticDataBinding"
Title="MainWindow" Height="157" Width="302">
<Window.Resources>
<ResourceDictionary>
<x:Array x:Key="MyDumbMockedList" Type="local:MockRecord">
<local:MockRecord FirstName="Fred" LastName="Flintstone" Email="[email protected]" />
<local:MockRecord FirstName="Wilma" LastName="Flintstone" Email="[email protected]" />
<local:MockRecord FirstName="Barney" LastName="Rubble" Email="[email protected]" />
</x:Array>
</ResourceDictionary>
</Window.Resources>
<Grid>
<DataGrid Margin="10" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
ItemsSource="{Binding Source={StaticResource MyDumbMockedList}}"/>
</Grid>
Tại sao xuống bỏ phiếu? Mọi người, nếu bạn đang downvoting trên một câu trả lời, bạn needto có một decensy ít nhất thêm một nhận xét về "tại sao" – Adarsha
nó là khá rõ ràng rằng đây là một liên kết chỉ trả lời .. – Console
Không, nó không chỉ liên kết .. Nếu tôi chỉ dừng lại sau dòng đầu tiên, thì nó sẽ có! Tôi thực sự giải thích lý do tại sao ví dụ trong bài viết được liên kết sẽ thực sự hữu ích cho OP. Do đó nó được đánh dấu là "Câu trả lời được chấp nhận". Nhưng dù sao.! – Adarsha