Xamarin表单视图不使用自定义类更新

Xamarin表单视图不使用自定义类更新,xamarin,mvvm,xamarin.forms,prism-6,Xamarin,Mvvm,Xamarin.forms,Prism 6,我正在使用Prism.Unity.Forms和Xamarin来完成这个项目。当Client.Id属性更改时,如何获取要更新的视图?当我将XAML从{Binding Client.Id}(Guid对象)更改为{Binding Client.Name}(字符串)时,视图将更新 这很有效 <Entry Text="{Binding Client.Name}"/> 使用转换器解决了这个问题,但我无法解释原因。正在以任何方式调用Guid.ToString方法 然后我在App.xaml &l

我正在使用Prism.Unity.Forms和Xamarin来完成这个项目。当
Client.Id
属性更改时,如何获取要更新的视图?当我将XAML从
{Binding Client.Id}
(Guid对象)更改为
{Binding Client.Name}
(字符串)时,视图将更新

这很有效

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

使用
转换器
解决了这个问题,但我无法解释原因。正在以任何方式调用
Guid.ToString
方法

然后我在
App.xaml

<ResourceDictionary>
    <viewHelpers:GuidConverter x:Key="GuidConverter" />
</ResourceDictionary>

使用
转换器
修复了问题,但我无法解释原因。正在以任何方式调用
Guid.ToString
方法

然后我在
App.xaml

<ResourceDictionary>
    <viewHelpers:GuidConverter x:Key="GuidConverter" />
</ResourceDictionary>


确保您的客户端实现INotifyPropertyChanged确保您的客户端实现INotifyPropertyChanged
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();
    }
}
public class GuidConverter : IValueConverter
{
    public object Convert()
    {
        var guid = (Guid) value;
        return guid.ToString();
    }

    public object ConvertBack(){...}
}
<ResourceDictionary>
    <viewHelpers:GuidConverter x:Key="GuidConverter" />
</ResourceDictionary>