एक गतिशील आदेश मापदंडों आदेश को देखने के मॉडल में पास करने के लिए आप एक नया वर्ग बना सकते हैं जैसे इस DynamicCommandParameterValueConverter
की तरह:
/// <summary>
/// This class is inspired by MvvmCross MvxCommandParameterValueConverter,
/// but because we need dynamic command parameters, we need to implement our own combined with a CustomMvxWrappingCommand.
/// </summary>
/// <typeparam name="T">The type of the 'selected item' for the command</typeparam>
/// <typeparam name="TResult">The returned result that is used as input for the command.</typeparam>
public class DynamicCommandParameterValueConverter<T, TResult> : MvxValueConverter<ICommand, ICommand>
{
private readonly Func<T, TResult> commandParameterExpression;
public DynamicCommandParameterValueConverter(Func<T, TResult> commandParameterExpression)
{
this.commandParameterExpression = commandParameterExpression;
}
protected override ICommand Convert(ICommand value, Type targetType, object parameter, CultureInfo culture)
{
return new CustomMvxWrappingCommand<T, TResult>(value, commandParameterExpression);
}
}
CustomMvxWrappingCommand
एक Func
तर्क के रूप में लेता है, और बाद में लागू किया और आदेश CanExecute/Execute
विधि में पारित कर दिया गया है।
public void Execute(object parameter)
{
if (wrapped == null)
{
return;
}
if (parameter != null)
{
Mvx.Warning("Non-null parameter overridden in MvxWrappingCommand");
}
wrapped.Execute(commandParameterOverride((T)parameter));
}
ऊपर दिए गए उदाहरण को लागू करने के Mvx से MvxWrappingCommand
वर्ग को संशोधित कर सकता है: यहां बताया गया है कि वर्ग का हिस्सा दिखाई दे सकता है का एक टुकड़ा है।
यह सब का उपयोग करते हैं:
set.Bind(myControl).For(control => control.ItemClick).To(vm => vm.MyCommand).WithConversion(
new DynamicCommandParameterValueConverter<MyModel, string>((MyModel item) =>
{
// Do custom logic before parsing the item..
}));
इस जवाब देने के लिए किसी भी नए अद्यतन है? मैं अपने UIButton के लिए आईओएस में गतिशील कमांड पैरामीटर रखना चाहता हूं। उदाहरण के लिए, जब आप बटन पर क्लिक करेंगे, तो यह मेरे कमांड को मेरे यूआईटीएक्स्टफाल्ड नियंत्रणों में से एक में वर्तमान टेक्स्ट के साथ कॉल करेगा ... और सभी के साथ झुका हुआ। – Michael