我正在尝试直接在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驱动并且有没有代码更改就无法使其正常工作。
谢谢!
答案 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>