如何在运行时动态地将值传递给ObjectDataProvider.MethodParameters

我写了这段代码:

public class CustomData { public int F1 { get; set; } public int F2 { get; set; } public string F3 { get; set; } } public class RetrievCustomData : List { public RetrievCustomData GetSome(int i) { for (int j = 0; j < i; j++) { CustomData cd = new CustomData(); Random rnd = new Random(); cd.F1 = j; cd.F2 = rnd.Next(i); cd.F3 = "nima"; this.Add(cd); } return this; } } 

和:

    20    

我想动态传递我的参数(这里是20)值(得到用户)。我怎么能这样做?

thaks

  1. 为DataProvider提供一些默认值,以便它已经设置并绑定到您的UI。

  2. 在运行时接受来自用户的值,然后使用FindResource调用将其提供给数据提供者并刷新…

      var myValue = GetFromUser(); ((ObjectDataProvider)this.FindResource("ADUsers")).MethodParameters.Clear(); ((ObjectDataProvider)this.FindResource("ADUsers")).MethodParameters.Add(myValue); ((ObjectDataProvider )this.FindResource("ADUsers")).Refresh(); 

或者另一个棘手的方法是使用MethodParameters绑定OneWayToSource …

        

但为了使这个工作你的TextBox文本(字符串)必须匹配参数的类型,在我们的情况下,遗憾的是整数。 为了解决这个问题,请创建一个可以解决此问题的转换器。

 public class IntToStringConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return value.ToString(); } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { int intValue = 0; string strText = value?.ToString(); if (!string.IsNullOrEmpty(strText)) { intValue = int.Parse(strText); } return intValue; } }