2010-11-16 78 views
0

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

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

的ObjectDataProvider看起来是这样的:

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

反正是有,我可以取回我的文本框的值(绑定到一个单独的ObjectDataProvider也放到了地方的硬编码“0”目前在我的XAML?我期待能有这个完全XAML驱动,一直无法得到它的工作没有更改代码。

谢谢!

回答

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> 
+0

属性“文本”的类型不找到“绑定”。该语法是否正确? – Matt 2010-11-16 17:53:30

+0

(我将需要MultiBinding) – Matt 2010-11-16 17:59:02

+0

哎呀对不起,尝试编辑帖子 – 2010-11-16 18:40:27