Tôi muốn khai báo một DataContext thông qua một tài nguyên tĩnh trong XAML như một ràng buộc cho các khách hàng trong cơ sở dữ liệu Northwind. Tôi có thể làm điều này dễ dàng trong mã (C#) nhưng muốn tìm hiểu làm thế nào để làm trong XAML. Tôi đã thử tất cả các ví dụ tôi có thể tìm thấy nhưng không ai trong số họ làm việc cho tôi. Tôi tin rằng vấn đề nằm trong hai dòng mã XAML mà tôi đã gắn nhãn [Option1] và [Option2]. Bạn có thể làm rõ cú pháp cho điều này thực sự nên là gì?Cách xác định DataContext trong XAML bằng cách sử dụng StaticResource
C#
namespace DataGridEF
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
bModel1 bNorthWind = new bModel1();
//this.DataContext = bNorthWind;
bNorthWind.GetCustomers();
}
}
}
namespace DataGridEF
{
public class bModel1
{
List<Customer> _Customers;
public List<Customer> Customers
{
get { return _Customers; }
set { _Customers = value; }
}
public void GetCustomers()
{
NorthwindEntities NorthWind = new NorthwindEntities();
var CustomerQ = from cust in NorthWind.Customers select cust;
_Customers = CustomerQ.ToList();
}
}
}
XAML
<Window x:Class="DataGridEF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
xmlns:vm="clr-namespace:DataGridEF">
<Window.Resources>
<vm:bModel1 x:Key="TheViewModel" />
</Window.Resources>
<Grid>
<DataGrid AutoGenerateColumns="False" Height="195"
HorizontalAlignment="Left" Margin="20,89,0,0"
Name="dataGrid1" ItemsSource="{Binding Path=Customers}"
[option1]DataContext="{StaticResource TheViewModel}"
[option2]DataContext=
"{Binding Path=., Source={StaticResource TheViewModel}}"
VerticalAlignment="Top" Width="471" >
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Path=ContactName}" />
<DataGridTextColumn Header="Address" Binding="{Binding Path=Address}" />
<DataGridTextColumn Header="City" Binding="{Binding Path=City}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>