none
如何在XAML中初始化一个空字符串 RRS feed

  • 问题

  • 有如下代码使用ObjectDataProvider绑定到一个接受参数的方法:

     <Window>
        <Window.Resources>
            <ObjectDataProvider x:Key="StudentServiceProvider"
                                ObjectType="{x:Type lib:StudentService}"
                                MethodName="QueryStudentsByName">
                <ObjectDataProvider.MethodParameters>
                    <sys:String></sys:String>
                </ObjectDataProvider.MethodParameters>
            </ObjectDataProvider>
        </Window.Resources>
        <StackPanel>
            <TextBox Name="tbNameKeyword"
                          Text="{Binding BindsDirectlyToSource=True,
                          Source={StaticResource StudentServiceProvider}, Path=MethodParameters[0],
                          UpdateSourceTrigger=Explicit}" />
            <Button Content="Search Students" Click="DoSearchStudentsClick" />
            <ListBox ItemsSource="{Binding Source={StaticResource StudentServiceProvider}}"/>
        </StackPanel>
     </Window>

            private void DoQueryStudentClick(object sender, RoutedEventArgs e)
            {
                tbNameKeyword.GetBindingExpression(TextBox.TextProperty).UpdateSource();
            }

    现在的问题是在定义ObjectDataProvider的参数时

    <ObjectDataProvider.MethodParameters>
          <sys:String></sys:String>
    </ObjectDataProvider.MethodParameters>


    若不指定此string参数的值,运行时会抛出null reference的异常,我不希望为此string参数定义任何默认值,希望初始化为null或者string.Empty,请问如何在实现?

    我试过如下:

                <ObjectDataProvider.MethodParameters>
                    <sys:String xml:space="preserve"> </sys:String>
                </ObjectDataProvider.MethodParameters>

    貌似不起作用。

     

     

    2011年7月29日 14:31

答案

全部回复

  • 你好,

    你可以使用x:Static来引用String的静态成员Empty。

            <x:StaticExtension Member="sys:String.Empty"/>
    


    Min Zhu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年8月2日 4:04
    版主
  • 你好,我尝试了如下代码:

    <ObjectDataProvider.MethodParameters>
          <sys:String>
                <x:StaticExtension Member="sys:String.Empty"/>
          </sys:String>
    </ObjectDataProvider.MethodParameters>

    得到错误信息:The type 'String' does not support direct content. 请问如何解决?

    2011年8月3日 10:32
  • <ObjectDataProvider.MethodParameters>
        <x:StaticExtension Member="sys:String.Empty"/>
     </ObjectDataProvider.MethodParameters>

    这样


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Lyman Ma 2011年8月4日 7:18
    2011年8月3日 15:59
    版主