Почему не обновлять текстовый блок при обновлении его источника - PullRequest
1 голос
/ 10 июля 2011

Пожалуйста, проверьте этот Pictute

public class Person : INotifyPropertyChanged
{

    private string name;
    // Declare the event
    public event PropertyChangedEventHandler PropertyChanged;
    public Person()
    {
    }
    public string newPerson(string Value)
    {
        this.Name = Value;
        return "";
    }
    public Person(string value)
    {

        this.name = value;

    }
    public string Name
    {

        get { return name; }

        set
        {

            name = value;

            // Call OnPropertyChanged whenever the property is updated

            OnPropertyChanged("Name");

        }

    }
    // Create the OnPropertyChanged method to raise the event

    protected void OnPropertyChanged(string name)
    {

        PropertyChangedEventHandler handler = PropertyChanged;

        if (handler != null)
        {

            handler(this, new PropertyChangedEventArgs(name));

        }

    }

.XAML:

<Window.Resources>
    <local:Person x:Key="NewPerson" Name="shuvo"/>
    <ObjectDataProvider x:Key="AddNewPerson" ObjectType="{x:Type local:Person}" MethodName="newPerson">
        <ObjectDataProvider.MethodParameters>
            <sys:String>yahoo</sys:String>
        </ObjectDataProvider.MethodParameters>
    </ObjectDataProvider>
</Window.Resources>
<Grid>
    <TextBlock Height="23" HorizontalAlignment="Left" Margin="46,57,0,0" Name="textBlock1" Text="{Binding Source={StaticResource NewPerson},Path=Name}" VerticalAlignment="Top" Width="207" />
    <TextBox Height="23" HorizontalAlignment="Left" Margin="46,149,0,0" Name="textBox1" VerticalAlignment="Top" Width="234" Text="{Binding Source={StaticResource AddNewPerson}, Path=MethodParameters[0],BindsDirectlyToSource=True,Mode=OneWayToSource,UpdateSourceTrigger=PropertyChanged}" />
</Grid>

1 Ответ

1 голос
/ 10 июля 2011

ObjectDataProvider создает новый экземпляр класса Person , а затем вызывает метод newPerson этого нового экземпляра.Этот новый экземпляр не подключен к уже существующему экземпляру Person , который вы объявили в ресурсах окна как NewPerson .Поэтому провайдер данных объекта вызывает метод, который не имеет никакого эффекта.

Вы должны преобразовать ObjectDataProvider , чтобы использовать свойство ObjectInstance и связать его с определенными ресурсами Windows. NewPerson .См. здесь для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...