UWP программно связывает динамическую форму - PullRequest
0 голосов
/ 19 февраля 2019

Я создал динамическую форму, используя этот класс модели:

public class CustomField 
{
    [JsonProperty("uid")]
    public Guid uid { get; set; }

    [JsonProperty("name")]
    public string name { get; set; }

    [JsonProperty("type")]
    public CustomFieldType type { get; set; }
}
public enum CustomFieldType
{
    TEXT = 0,
    MULTI_LINE = 1,
    DATETIME = 2,
    ...
}

, и я буду использовать этот класс модели для сохранения значения настраиваемого поля:

public class CustomFieldValue
{
    [JsonProperty("uid")]
    public Guid uid { get; set; }

    [JsonProperty("type")]
    public CustomFieldType type { get; set; }

    [JsonProperty("textValue")]
    public string textValue { get; set; }

    [JsonProperty("dateValue")]
    public DateTime dateValue { get; set; }
    ...
}

помимо пользовательских полей, моя базаМодель содержит также стандартные входные данные:

public class BaseModel
{
    [JsonProperty("uid")]
    public Guid uid { get; set; }

    [JsonProperty("name")]
    public string name { get; set; }

    [JsonProperty("description")]
    public string description { get; set; }
    ...

    [JsonProperty("customFieldValues")]
    public List<CustomFieldValue> customFieldValues { get; set; }
}

Мой вопрос заключается в том, как я могу программным способом связать настраиваемые поля, как я это делал ниже в моей модели представления со стандартными входными данными:

public class ViewModel : ViewModelBase
{
   BaseModel cModel;
   ...
   public string name
   {
       get
       {
           if (isLoaded)
               return Model.name;
           else
               return "";
       }
       set
       {
           if (Model.name != value)
           {
               Model.name = value;
               OnPropertyChanged();
               isModified = true;
           }
       }
   }
   ...
   public BaseModel Model
   {
        get
        {
            return cModel;
        }
        set
        {
            cModel = value;
            OnPropertyChanged();
            OnPropertyChanged(nameof(name));
            ...
        }
   }
}

В моемпросмотр страницы:

<TextBox x:Name="txtName"
         Text="{x:Bind ViewModel.name, Mode=TwoWay}"
         Style="{StaticResource entryDefault}"
         Header= "Name*"
         PlaceholderText="Enter Name"
         Margin="0,10,0,0"
         Width="800"
         HorizontalAlignment="Left"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...