обновление значения текстового блока после события RaisePropertyChanged не работает - PullRequest
0 голосов
/ 04 ноября 2011

У меня просто вид:

<Grid x:Name="LayoutRoot">      
    <TextBox Height="23" HorizontalAlignment="Left" Margin="66,66,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" Text="{Binding Path=MainName,Mode=TwoWay}" />
    <TextBox Height="23" HorizontalAlignment="Left" Margin="66,142,0,0" Name="textBox2" VerticalAlignment="Top" Width="120" Text="Space to tab :)" />
    <TextBox Height="23" HorizontalAlignment="Left" Margin="67,220,0,0" Name="textBox3" VerticalAlignment="Top" Width="120" Text="{Binding Path=Name}" />
</Grid>

А во ViewModel у меня есть:

private string _mainName;

public string Name
{
    get { return MainName; }
}

public string MainName
{
    get { return _mainName; }
    set
    {
        _mainName = value;
        RaisePropertyChanged(MainName);
        RaisePropertyChanged(Name);
    }
}

Когда я изменяю значение в первом текстовом поле, вызываются RaisePropertyChange, и во время отладки я вижу, что он вводит меня в получатели MainName и Name, но нет изменений в текстовом блоке, который связал Name.

Почему это так и как это исправить?

1 Ответ

4 голосов
/ 05 ноября 2011

Ваши RaisePropertyChanged вызовы методов мне не подходят.Аргументом должно быть имя свойства, а не значение .Другими словами, вы должны написать

        RaisePropertyChanged("MainName");
        RaisePropertyChanged("Name");

Если бы у ваших свойств был тип, отличный от string, вы бы довольно быстро обнаружили ошибку, поскольку в этом случае ваш код не компилировался бы.

...