我正在搜索如何以MvvM方式从ToolKit动态创建DataGrid的列.但看起来这是不可能的!
是否有一些必须做同样的事情?
没有必要创建一个来自DataGrid的usercontrol或其他控件,我只想将网格的de ItemSource设置为我的自定义对象,在某些时候我想在运行时基于类型定义网格的列对象.
那可能吗 ?
干杯
获取属性并不是什么大问题,但我不想从另一个类继承属性.该bindingFlags选项没有任何此类选项.
那可能吗 ?
干杯
我是Wpf和Mvvm世界的新手,但我发现了几个例子,并且发现有一些不同的方式来实例化模型.我想知道最好/最正确的方法.两种方式都使用Unity
我发了什么:
var navigatorView = new MainView();
navigatorView.DataContext = m_Container.Resolve<INavigatorViewModel>();
m_RegionManager.Regions["NavigatorRegion"].Add(navigatorView);
Run Code Online (Sandbox Code Playgroud)
我做了什么:
var navigatorView = m_Container.Resolve<MainView>;
m_RegionManager.Regions["NavigatorRegion"].Add(navigatorView);
Run Code Online (Sandbox Code Playgroud)
并且我更改了构造函数以接收viewmodel,因此我可以将datacontext指向它:
public MainView(NavigatorViewModel navigatorViewModel)
{
this.DataContext = navigatorViewModel;
}
Run Code Online (Sandbox Code Playgroud)
其他例子我发现了另一种方式:
...vm = new viewmodel
...m = new model
v.model = vm;
Run Code Online (Sandbox Code Playgroud)
获取/设置DataContext
干杯
我用这种方法做了一个重构.在我们有很多循环和虚拟代码之前.这是我可以去的,但我想我可以更简单.
我想我可以直接从from*group&select以正确的方式放入列表中.
这可能吗?或者我必须有这个循环?
private IEnumerable<ESMatchDate> groupBydate(IEnumerable<ESMatch> matches)
{
List<ESMatchDate> lMatchDates = new List<ESMatchDate>();
if (null != matches && matches.Any())
{
var dates = from ESMatch in matches
group ESMatch by ESMatch.BeginDate.ToShortDateString() into newGroup
orderby Convert.ToDateTime(newGroup.Key)
select newGroup;
foreach (var d in dates)
lMatchDates.Add( new ESMatchDate
{ Date = Convert.ToDateTime(d.Key), Matches = d.ToList()} );
}
else
lMatchDates = null;
return lMatchDates;
}
Run Code Online (Sandbox Code Playgroud)