TextBox - связанное имя свойства - PullRequest
2 голосов
/ 25 мая 2011

У меня есть список TextBox, которые связаны с различными свойствами.

<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 ]

6 голосов
/ 25 мая 2011

Я думаю, это то, что вы хотите:

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

Редактировать

Или вы можете использовать BindingOperations.GetBinding как показано здесь Я не уверен, что один путь лучше другого.

1 голос
/ 25 мая 2011

Назовите TextBox в xaml, x:Name="MyTextBox", затем вы можете проверить его, textBox.Name == "MyTextBox".

...