从ViewModel(MVVM)设置值时会触发哪些文本框事件

时间:2015-03-24 11:18:06

标签: wpf mvvm wpf-controls

我需要通过自定义控件中的代码将格式应用于Text属性,即拦截值并对其进行格式化。我无法使用StringFormat **。

我正在寻找一个从VM设置值时将触发的事件,因此我可以拦截那里的值。

**我使用的是UpdateSourceTrigger="PropertyChanged",但这与StringFormat

无法正常工作

2 个答案:

答案 0 :(得分:1)

自定义控件通常不会映射到VM,也不会直接公开其模板以进行绑定。你的意思是UserControl吗?

如果它确实是自定义控件,那么您应该在控件上公开依赖项属性以供VM绑定。然后在控件模板中,您也可以通过转换器将文本框绑定到它。

答案 1 :(得分:0)

对于这些要求,我建议您使用转换器

Text="{Binding YourTextValue, Converter={StaticResource FormatConverter}}"

和转换器为 -

Public Class FormatConverter
    Implements IValueConverter


    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 ' your formatted string
    End Function

    Public Function ConvertBack(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As CultureInfo) As Object Implements IValueConverter.ConvertBack
        ' do nothing. or may be if you want to
    End Function
End Class