我有一個自定義標記擴展,它使用依賴注入來解析命令。對我來說非常方便,因爲我不必在視圖模型中創建命令併爲它們綁定。 最近我被告知使用這種標記擴展在mvvm中不是一個好習慣,我應該避免這種情況。真的嗎?通過標記擴展注入命令是一種很好的做法嗎?
代碼標記擴展的:
public class InjectCommandExtension : MarkupExtension
{
#region Props
[ConstructorArgument("key")]
public string Key { get; set; }
#endregion
#region ctor
public InjectCommandExtension()
{
}
public InjectCommandExtension(string key)
{
Key = key;
}
#endregion
#region ProvideValue
public override object ProvideValue(IServiceProvider serviceProvider)
{
if (Key == null)
throw new ArgumentNullException("Key");
return ServiceLocator.Current.GetInstance<ICommand>(Key);
}
#endregion
}
在使用XAML:
<Button Content="Delete" Command="{mext:InjectCommand DeleteOrderCommand}"/>
你能告訴我們一些代碼從你的viewmodel和xaml。我真的很感興趣,看看他們是如何連接。 – blindmeis 2012-01-30 13:55:04
你在何時何地進行注射?這將影響它是否是好的做法。 – 2012-01-30 14:36:48