Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当与Wpf绑定时,有没有一种方法可以在不使用转换器的情况下使用System.String函数?_Wpf_Vb.net_Data Binding_Converter - Fatal编程技术网

当与Wpf绑定时,有没有一种方法可以在不使用转换器的情况下使用System.String函数?

当与Wpf绑定时,有没有一种方法可以在不使用转换器的情况下使用System.String函数?,wpf,vb.net,data-binding,converter,Wpf,Vb.net,Data Binding,Converter,当与Wpf绑定时,有没有一种方法可以在不使用转换器的情况下使用System.String函数 <TextBlock Text="({Binding Path=Text}).Trim()"/> 这基本上是我的愿望 我会使用转换器 绑定Xaml <StackPanel> <StackPanel.Resources> <local:StringTrimmingConverter x:Key="trimmingConverter" />

当与Wpf绑定时,有没有一种方法可以在不使用转换器的情况下使用System.String函数

<TextBlock Text="({Binding Path=Text}).Trim()"/>


这基本上是我的愿望

我会使用转换器

绑定Xaml

<StackPanel>
  <StackPanel.Resources>
    <local:StringTrimmingConverter x:Key="trimmingConverter" />
  <StackPanel.Resources>
  <TextBlock Text="{Binding Path=Text, Converter={StaticResource trimmingConverter}}" />
</StackPanel>
如果VBStringTrimmingConverter.VB

Imports System.Globalization

Public Class StringTrimmingConverter
    Implements IValueConverter

    Public Function ConvertBack(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As CultureInfo) As Object Implements IValueConverter.ConvertBack
        Return value.ToString().Trim
    End Function

    Public Function Convert(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As CultureInfo) As Object Implements IValueConverter.Convert
        Return value
    End Function

End Class

我会使用转换器

绑定Xaml

<StackPanel>
  <StackPanel.Resources>
    <local:StringTrimmingConverter x:Key="trimmingConverter" />
  <StackPanel.Resources>
  <TextBlock Text="{Binding Path=Text, Converter={StaticResource trimmingConverter}}" />
</StackPanel>
如果VBStringTrimmingConverter.VB

Imports System.Globalization

Public Class StringTrimmingConverter
    Implements IValueConverter

    Public Function ConvertBack(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As CultureInfo) As Object Implements IValueConverter.ConvertBack
        Return value.ToString().Trim
    End Function

    Public Function Convert(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As CultureInfo) As Object Implements IValueConverter.Convert
        Return value
    End Function

End Class

我为System.String中的所有函数创建了一个终极转换器,需要一些改进。希望收到您的回复,希望将来更新,请接受:

    <ValueConversion(GetType(String), GetType(String))> _
Class StringFunctions : Implements IValueConverter
    Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
        If parameter Is Nothing OrElse Not TypeOf parameter Is String OrElse String.IsNullOrEmpty(parameter) Then Return Nothing
        Dim parameters As New List(Of String)(parameter.ToString.Split(":"c))
        parameter = parameters(0)
        parameters.RemoveAt(0)
        If String.IsNullOrEmpty(parameter) Then Return value

        Dim method = (From m In GetType(String).GetMethods _
                Where m.Name = parameter _
                AndAlso m.GetParameters.Count = parameters.Count).FirstOrDefault
        If method Is Nothing Then Return value
        Return method.Invoke(value, parameters.ToArray)
    End Function
    Public Function ConvertBack(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack
        Throw New NotSupportedException
    End Function
End Class
_
类StringFunctions:实现IValueConverter
公共函数转换(ByVal值作为对象,ByVal targetType作为系统.Type,ByVal参数作为对象,ByVal区域性作为系统.Globalization.CultureInfo)作为对象实现System.Windows.Data.IValueConverter.Convert
如果参数为Nothing或Else Not TypeOf参数为String或Else String.IsNullOrEmpty(参数),则返回Nothing
将参数设置为新列表(字符串)(parameter.ToString.Split(“:”c))
参数=参数(0)
参数.RemoveAt(0)
如果String.IsNullOrEmpty(参数),则返回值
Dim method=(来自GetType(String).GetMethods中的m_
其中m.Name=参数_
AndAlso m.GetParameters.Count=parameters.Count).FirstOrDefault
若方法为Nothing,则返回值
返回方法.Invoke(值、参数.ToArray)
端函数
作为对象的公共函数ConvertBack(ByVal值作为对象,ByVal targetType作为系统.Type,ByVal参数作为对象,ByVal区域性作为系统.Globalization.CultureInfo)实现System.Windows.Data.IValueConverter.ConvertBack
抛出新的NotSupportedException
端函数
末级
在绑定中,当您使用转换器时,您可以选择将参数传递给转换器(binding.ConverterParameter)传递所有参数,参数以:(冒号-您可以在String.Split delimiter参数中更改),而第一个参数是函数名,函数将计算额外参数并尝试传递它。
我仍然没有处理参数寻址,这是一个肤浅的函数。

希望看到您的改进和注释。
谢谢
Shimmy

我为System.String中的所有功能创建了一个终极转换器,需要一些改进。希望收到您的回复,希望将来更新,请接受:

    <ValueConversion(GetType(String), GetType(String))> _
Class StringFunctions : Implements IValueConverter
    Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
        If parameter Is Nothing OrElse Not TypeOf parameter Is String OrElse String.IsNullOrEmpty(parameter) Then Return Nothing
        Dim parameters As New List(Of String)(parameter.ToString.Split(":"c))
        parameter = parameters(0)
        parameters.RemoveAt(0)
        If String.IsNullOrEmpty(parameter) Then Return value

        Dim method = (From m In GetType(String).GetMethods _
                Where m.Name = parameter _
                AndAlso m.GetParameters.Count = parameters.Count).FirstOrDefault
        If method Is Nothing Then Return value
        Return method.Invoke(value, parameters.ToArray)
    End Function
    Public Function ConvertBack(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack
        Throw New NotSupportedException
    End Function
End Class
_
类StringFunctions:实现IValueConverter
公共函数转换(ByVal值作为对象,ByVal targetType作为系统.Type,ByVal参数作为对象,ByVal区域性作为系统.Globalization.CultureInfo)作为对象实现System.Windows.Data.IValueConverter.Convert
如果参数为Nothing或Else Not TypeOf参数为String或Else String.IsNullOrEmpty(参数),则返回Nothing
将参数设置为新列表(字符串)(parameter.ToString.Split(“:”c))
参数=参数(0)
参数.RemoveAt(0)
如果String.IsNullOrEmpty(参数),则返回值
Dim method=(来自GetType(String).GetMethods中的m_
其中m.Name=参数_
AndAlso m.GetParameters.Count=parameters.Count).FirstOrDefault
若方法为Nothing,则返回值
返回方法.Invoke(值、参数.ToArray)
端函数
作为对象的公共函数ConvertBack(ByVal值作为对象,ByVal targetType作为系统.Type,ByVal参数作为对象,ByVal区域性作为系统.Globalization.CultureInfo)实现System.Windows.Data.IValueConverter.ConvertBack
抛出新的NotSupportedException
端函数
末级
在绑定中,当您使用转换器时,您可以选择将参数传递给转换器(binding.ConverterParameter)传递所有参数,参数以:(冒号-您可以在String.Split delimiter参数中更改),而第一个参数是函数名,函数将计算额外参数并尝试传递它。
我仍然没有处理参数寻址,这是一个肤浅的函数。

希望看到您的改进和注释。
谢谢
摆振

您需要使用转换器来转换控件绑定到的数据。为了避免编写大量的转换器和简单的转换,您可以使用动态语言运行库,并使用您最喜欢的DLR脚本语言(如Python、Ruby等)编写表达式


有关如何实现此目标的示例,请参见。专门讨论ValueConverters。

您需要使用转换器来转换控件绑定到的数据。为了避免编写大量的转换器和简单的转换,您可以使用动态语言运行库,并使用您最喜欢的DLR脚本语言(如Python、Ruby等)编写表达式


有关如何实现此目标的示例,请参见。专门讨论ValueConverters。

我为System.String中的所有函数创建了一个终极转换器,需要一些改进。希望收到您的来信,希望将来更新,请接受:

    <ValueConversion(GetType(String), GetType(String))> _
Class StringFunctions : Implements IValueConverter
    Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
        If parameter Is Nothing OrElse Not TypeOf parameter Is String OrElse String.IsNullOrEmpty(parameter) Then Return Nothing
        Dim parameters As New List(Of String)(parameter.ToString.Split(":"c))
        parameter = parameters(0)
        parameters.RemoveAt(0)
        If String.IsNullOrEmpty(parameter) Then Return value

        Dim method = (From m In GetType(String).GetMethods _
                Where m.Name = parameter _
                AndAlso m.GetParameters.Count = parameters.Count).FirstOrDefault
        If method Is Nothing Then Return value
        Return method.Invoke(value, parameters.ToArray)
    End Function
    Public Function ConvertBack(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack
        Throw New NotSupportedException
    End Function
End Class
VB:

<ValueConversion(GetType(String), GetType(Object))> _
Class StringFunctions : Implements IValueConverter
    Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
        If parameter Is Nothing OrElse Not TypeOf parameter Is String OrElse String.IsNullOrEmpty(parameter) Then Return Nothing
        Dim parameters As New List(Of String)(parameter.ToString.Split(":"c))
        parameter = parameters(0)
        parameters.RemoveAt(0)
        If String.IsNullOrEmpty(parameter) Then Return value

        Dim method = (From m In GetType(String).GetMethods _
                Where m.Name = parameter _
                AndAlso m.GetParameters.Count = parameters.Count).FirstOrDefault
        If method Is Nothing Then Return value
        Return method.Invoke(value, parameters.ToArray)
    End Function
    Public Function ConvertBack(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack
        Return value.ToString()
    End Function
End Class
<TextBox Text="{Binding Path=String, Converter={StaticResource StringConverter}, ConverterParameter=Trim:Argument:AnotherArgument}" />
_
类StringFunctions:实现IValueConverter
公共函数转换(ByVal值作为对象,ByVal targetType作为系统.Type,ByVal参数作为对象,ByVal区域性作为系统.Globalization.CultureInfo)作为对象实现System.Windows.Data.IValueConverter.Convert
如果参数为Nothing或Else Not TypeOf参数为String或Else String.IsNullOrEmpty(参数),则返回Nothing
将参数设置为新列表(字符串)(parameter.ToString.Split(“:”c))
参数=参数(0)
参数.RemoveAt(0)
如果String.IsNullOrEmpty(参数),则返回值
暗淡的