C# Silverlight模型,视图-视图模型故障
您好,我正在尝试在ViewModel中创建包含事件的Silverlight页面,但我不知道如何在页面加载事件中执行此操作(我找不到正确的命令)。 我想将这个:Loaded=“RadPane\u Loaded”绑定到Loaded={Binding RadPane\u Loaded} 视图: 视图模型:C# Silverlight模型,视图-视图模型故障,c#,silverlight,mvvm,prism,viewmodel,C#,Silverlight,Mvvm,Prism,Viewmodel,您好,我正在尝试在ViewModel中创建包含事件的Silverlight页面,但我不知道如何在页面加载事件中执行此操作(我找不到正确的命令)。 我想将这个:Loaded=“RadPane\u Loaded”绑定到Loaded={Binding RadPane\u Loaded} 视图: 视图模型: namespace SilverlightTest.Modules.Tree { public class OutlookBarViewModel : DependencyObject
namespace SilverlightTest.Modules.Tree
{
public class OutlookBarViewModel : DependencyObject
{
private IEventAggregator _eventAggregator;
private IMainPage _shell;
private IUnityContainer _container;
public OutlookBarViewModel(IEventAggregator eventAggregator, IMainPage shell, IUnityContainer container)
{
_container = container;
_eventAggregator = eventAggregator;
_shell = shell;
}
This is what I would normally do to bind something to a control.
public ICommand ExampleCommand
{
get { return (ICommand)GetValue(ExampleCommandProperty); }
set { SetValue(ExampleProperty, value); }
}
/* Here I'd like to bind the page load event but I don't understand how...? */
}
}
public void GridViewSelectionChangedCommandExecute(SelectionChangeEventArgs e)
{ }
<RadPane>
<i:Interaction.EventTriggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command={Binding InitializeCommand}/>
</i:EventTrigger>
</i:Interaction.EventTriggers>
</RadPane>
因此,当加载的事件引发时,将调用viewmodel的命令InitializeCommand 我发现有一种非常简单的方法,可以使用Caliburn库将EventArgs发送到ViewModel。(http://caliburnmicro.codeplex.com/) xmlns:caliburn=“clr命名空间:caliburn.Micro;assembly=caliburn.Micro” xmlns:i=”http://schemas.microsoft.com/expression/2010/interactivity"
不过,我想知道viewmodel现在是否对视图了解得太多。嘿,弗拉基米尔,非常感谢。这对我来说是非常有用的信息:D这是标准的Silverlight方式吗?还是有其他的选择?我想知道这是因为这个功能不在标准的Silverlight程序集中。是的,如果你想使用MVVM模式,这是标准的方式。这些程序集将在Silverlight 5的核心中提供,但现在它们随Blend SDK一起提供
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command="{Binding GridViewLoaded}"/>
</i:EventTrigger>
<i:EventTrigger EventName="SelectionChanged">
<caliburn:ActionMessage MethodName="GridViewSelectionChangedCommandExecute">
<caliburn:Parameter Value="$eventArgs"></caliburn:Parameter>
</caliburn:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
public void GridViewSelectionChangedCommandExecute(SelectionChangeEventArgs e)
{ }