如何使用StaticResource在XAML中定义DataContext
我想通过XAML中的静态资源声明一个DataContext,作为Northwind数据库中Customers的绑定。 我可以在代码(C#)中轻松完成此操作,但想学习如何在XAML中完成。 我已经尝试了所有可以找到的例子,但它们都不适合我。 我认为问题出在我标记为[Option1]和[Option2]的两行XAML代码行中。 你能澄清一下这个语法究竟应该是什么吗?
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 _Customers; public List 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
如果为了避免使问题与Entities Framework和MSSQL NorthWind数据库复杂化,那么在Exampleproject“ WPF / MVVM快速入门教程 ”的示例2示例代码中提供了很好的说明。
对于您的XAML,您应该将其开头更改为:
这种方法的另一种变体可以在“在代码中设置DataContext而不是XAML的优势是什么?”中看到。 , 那个部分:
将DataContext
定义从代码隐藏迁移到XAML与StaticResource
或DynamicResource
的使用无关。 请参阅: WPF中StaticResource和DynamicResource之间的区别是什么? 可能在codeproject WPF中更好地解决:StaticResource与DynamicResource
相关,有用和进一步阅读:
我更喜欢将键设置为静态字符串 – 如果您可以轻松避免,WPF具有足够的魔术字符串而无需将自己转移到重构角落。
在App.xaml
xmlns:viewModels="clr-namespace:MyAppNamespace.ViewModels" xmlns:local="clr-namespace:tvCADdesktop" x:Name="App" ...
在App.xaml.cs
public static readonly string MainVmResourceKey = "MainVm";
在我的各种Control.xaml
请注意UserControl
部分是您要将ViewModel应用于的任何类型。
上述就是C#学习教程:如何使用StaticResource在XAML中定义DataContext分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1010801.html