Создайте другое свойство в вашей модели и используйте это свойство, чтобы проверить, имеет ли указанное свойство c атрибут.
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
this.BindingContext = new myViewModel();
}
}
class myViewModel : INotifyPropertyChanged
{
bool _isRequired;
public event PropertyChangedEventHandler PropertyChanged;
public string Prop1 { get; set; }
public myViewModel()
{
checkIfRequired();
}
public void checkIfRequired() {
var t = typeof(myViewModel);
var pi = t.GetProperty("Prop1");
bool hasIsIdentity = Attribute.IsDefined(pi, typeof(RequiredAttribute));
isRequired = hasIsIdentity;
}
public bool isRequired
{
set
{
if (_isRequired != value)
{
_isRequired = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("isRequired"));
}
}
}
get
{
return _isRequired;
}
}
}
В xaml:
<Entry x:Name="Prop1" IsEnabled="{Binding isRequired}" Text="{Binding Prop1, Mode=TwoWay}"/>
Возможно, вам потребуется используйте конвертер, если вам нужно привязать к BorderColor.
Обновление :
public myViewModel()
{
checkIfRequired(nameof(Prop1));
}
public void checkIfRequired(string nameOfProeprty) {
var t = typeof(myViewModel);
var pi = t.GetProperty(nameOfProeprty);
bool hasIsIdentity = Attribute.IsDefined(pi, typeof(RequiredAttribute));
isRequired = hasIsIdentity;
}