TextBox - 绑定属性名称

时间:2011-05-24 21:23:31

标签: c# silverlight data-binding binding

我有一个TextBoxes列表,它们绑定到不同的属性。

<TextBox Text="{Binding Name, Mode=TwoWay,ValidatesOnDataErrors=True, ValidatesOnExceptions=True, NotifyOnValidationError=True}" VerticalAlignment="Center" Margin="5" Width="300" Grid.Column="1" Grid.Row="1" LostFocus="TextBox_Validate"/>

我想写一个处理程序,如

private void TextBox_Validate(object sender, RoutedEventArgs e)
        {
            var textBox = (sender as TextBox);
            if(textBox!=null)
            {
                var propertyName = X; // Get propertyName textBox.Text is bound to.
                CurrentDataContext.ValidateFields("Name"); // Name in this specific textBox
            }
        }

是否可以获取属性的名称,以便我不必编写许多不同的方法来执行相同的操作?

2 个答案:

答案 0 :(得分:6)

我认为这就是你想要的:

var expression = textBox.GetBindingExpression(TextBox.TextProperty);
if (expression != null && expression.ParentBinding != null)
{
    var propertyName = expression.ParentBinding.Path.Path;
}

修改

或者您可以使用BindingOperations.GetBinding,如here所示。我不确定一种方式是否比另一方更好。

答案 1 :(得分:1)

将文本框命名为xaml x:Name="MyTextBox",然后您可以检查textBox.Name == "MyTextBox"