ObjectDataProvider MethodParameter直接在XAML中定义

时间:2010-11-16 17:10:23

标签: wpf vb.net xaml binding

我正在尝试直接在XAML中修改MethodParameter。我有一个工作示例,我从代码中设置它。代码版本是:

Dim odp As New ObjectDataProvider()
odp = FindResource("Products")
odp.MethodParameters.Clear()
odp.MethodParameters.Add(CType(txtCatId.Text, Integer))

XAML中定义的ObjectDataProvider如下所示:

<ObjectDataProvider x:Key="Products"
      ObjectInstance="{StaticResource ProductsDataProvider}"
      MethodName="GetProdsByCatID">
        <ObjectDataProvider.MethodParameters>
            <sys:Int32>0</sys:Int32>
        </ObjectDataProvider.MethodParameters>
    </ObjectDataProvider>

无论如何我可以检索我的文本框的值(它绑定到一个单独的ObjectDataProvider并将其放在我的XAML中当前的硬编码“0”的位置?我希望这是完全由XAML驱动并且有没有代码更改就无法使其正常工作。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以尝试像这样绑定TextBox.Text

   <ObjectDataProvider x:Key="Products"
      ObjectInstance="{StaticResource ProductsDataProvider}"
      MethodName="GetProdsByCatID">
        <ObjectDataProvider.MethodParameters>
            <sys:Int32>0</sys:Int32>
        </ObjectDataProvider.MethodParameters>
    </ObjectDataProvider>

   <TextBox Text={Binding Source={StaticResource Products}, Path="MethodParameters[0]" BindsDirectlyToSource="True" Mode="OneWayToSource"}/>

如果您对TextBox.Text有其他绑定,请尝试使用MultiBinding

<TextBox>
   <TextBox.Text>
      <MultiBinding Converter="...">
        <Binding Source="{StaticResource Products}", Path="MethodParameters[0]" BindsDirectlyToSource="True" Mode="OneWayToSource"/>
        ...
      </MultiBinding>
   </TextBox.Text>
</TextBox>