gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:17:56 29 4
gpt4 key购买 nike

我写了这段代码:

public class CustomData
{
public int F1 { get; set; }
public int F2 { get; set; }
public string F3 { get; set; }
}


public class RetrievCustomData : List<CustomData>
{
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;
}
}

和:

<Window.Resources>
<ObjectDataProvider x:Key="ADUsers" ObjectType="{x:Type src:RetrievCustomData}"
MethodName="GetSome">
<ObjectDataProvider.MethodParameters>
<sys:Int32>20</sys:Int32>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>

我想动态传递我的参数(这里是 20)值(从用户那里获取)。我该怎么做?

最佳答案

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

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

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

或者另一种棘手的方法是将 OneWayToSource 与 MethodParameters 绑定(bind)...

    <TextBox x:Name="UserInput">  
<TextBox.Text>
<Binding Source="{StaticResource ADUsers}"
Path="MethodParameters[0]"
BindsDirectlyToSource="True"
Mode="OneWayToSource">
</Binding>
</TextBox.Text>
</TextBox>

但要使其正常工作,您的 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;
}
}

关于c# - 如何在运行时动态地将值传递给 ObjectDataProvider.MethodParameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6882462/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com