Quindi ho esaminato parte del mio vecchio codice dal momento in cui stavo imparando le basi di wpf e ho trovato qualcosa di interessante.
Ho avuto una lezione nel formato seguente
public class TempClass
{
public bool IsValued { get; set; }
private SolidColorBrush _isValuedColour;
public SolidColorBrush IsValuedColor
get
{
if (this.IsValued)
{
_accepted = new SolidColorBrush(Colors.DarkGreen);
}
else
{
_accepted = new SolidColorBrush(Colors.Transparent);
}
return _accepted;
}
set { _accepted = value; }
}
Se vedi, ho creato un SolidColorBrush basato sulla mia proprietà IsValued per restituire una proprietà color. Questo codice era del 2013 e credo di aver iniziato a imparare in questo modo, forse a causa dei siti web che stavo passando per imparare xaml
Vieni 2015 ho controllato un altro progetto e ho notato che ho iniziato a usare IValueConverter
Sono riuscito a ottenere lo stesso senza creare una nuova proprietà.
<Button Foreground="{Binding IsValued, Converter={StaticResource boolConverter}}">
ed ecco la mia implementazione.
class BoolToColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
SolidColorBrush brush = new SolidColorBrush();
if ((bool)value)
{
brush = new SolidColorBrush(Colors.Gold);
}
else
{
brush = new SolidColorBrush(Colors.Transparent);
}
return brush;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
Mentre entrambi fanno il lavoro per me, vorrei sapere quale percorso è migliore. La creazione di una nuova proprietà con getter e setter è un buon metodo o utilizzare i convertitori in modo corretto?
Grazie per avermi illuminato.