1

このプロジェクトでは、Xamarin で Prism.Unity.Forms を使用しています。Client.Idプロパティが変更されたときにビューを更新するにはどうすればよいですか? XAML を{Binding Client.Id}(Guid オブジェクト) から{Binding Client.Name}(文字列) に変更すると、ビューが更新されます。

public class CreateClientViewModel : BindableBase
{
    private Client _client;
    public Client Client {
        get => _client;
        set => SetProperty(ref _client, value);
    }

    private async void FetchNewClient()
    {
        Client = new Client{
            Id = new Guid.Parse("501f1302-3a45-4138-bdb7-05c01cd9fe71"),
            Name = "MyClientName"
        };
    }
}

これは機能します

<Entry Text="{Binding Client.Name}"/>

これはしません

<Entry Text="{Binding Client.Id}"/>

カスタムクラスでラップしてメソッドをオーバーライドしたため、メソッドがプロパティToStringで呼び出されていることはわかっていますが、ビューはまだ更新されません。Client.IdGuidToString

public class CreateClientViewModel : BindableBase
{
    private Client _client;
    public Client Client {
        get => _client;
        set => SetProperty(ref _client, value);
    }

    //This method will eventually make an API call.
    private async void FetchNewClient()
    {
        Client = new Client{
            Id = new ClientId{
                Id = new Guid.Parse("501f1302-3a45-4138-bdb7-05c01cd9fe71")
            },
            Name = "MyClientName"
        };
    }
}

public class ClientId
{
    public Guid Id { get; set }

    public override string ToString()
    {
        //This method gets called
        Console.WriteLine("I GET CALLED");
        return Id.ToString();
    }
}
4

1 に答える 1