San*_*tel 33 c# silverlight wpf mvvm devforce
我有一个WPF窗口,在那个窗口我有一个网格.
我使用MV-VM模型,我想在代码中动态地将TextBox添加到网格中(在viewmodel中)
我怎样才能访问网格?
nih*_*que 70
使用监督控制器模式.
读:
此处显示了CaliburnMicro MVVM框架的示例实现(对于所有其他框架也是如此 - 或者如果您自己进行MVVM,则可以手动完成):
http://drc.ideablade.com/devforce-2012/bin/view/Documentation/cocktail-tutorial-talk-to-view
例:
1)定义的接口IView,其中ViewModel(VM)会跟View与所需的方法(S)
public interface IView
{
void AddTextBoxToGrid();
}
Run Code Online (Sandbox Code Playgroud)
2)从你的和实现方法继承代码ViewIViewIView.AddTextboxToGrid()
public partial class View: IView
{
public void AddTextBoxToGrid()
{
// implement here your custom view logic using standard code behind;
}
}
Run Code Online (Sandbox Code Playgroud)
3)将类型的属性添加IView到您的VM
public class ViewModel
{
public IView View { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
4)将View属性设置VMView为IView
例如在DataContext.View =后面的代码中的实例作为IView; 或者在Caliburn中你可以使用IScreen.OnViewAttached覆盖方法)
DataContext.View = this as IView;
Run Code Online (Sandbox Code Playgroud)
5)在你的VM 电话中IView.AddTextboxToGrid()
public partial class View: IView
{
public View()
{
// access you VM by the strategy of your framework or choice - this example is when you store your VM in View's DataContext
(DataContext as ViewModel).View = this as IView;
}
public void AddTextBoxToGrid()
{
// implement here your custom view logic using standard code behind;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44829 次 |
| 最近记录: |