Usuário com melhor resposta
Problemas ao passar um parametro para um Converter

Pergunta
-
Olá, estou usando um Converter para deixar um resource SolidColorBrush com um nível de transparência variável. O problema é que preciso passar o valor Alpha como parâmetro que vai representar a opacidade que será retornada só que está dando erro. Quando eu tento sem passar nenhum parâmetro funciona, porém, se tento inserir um número como parâmetro dá erro no xaml e a pagina não abre.
Este é o código do Converter:
public class TransparencyConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, string language) { SolidColorBrush scb = (SolidColorBrush)value; if (parameter != null) return Color.FromArgb((byte)parameter, scb.Color.R, scb.Color.G, scb.Color.B); else return Color.FromArgb(100, scb.Color.R, scb.Color.G, scb.Color.B); } public object ConvertBack(object value, Type targetType, object parameter, string language) { throw new NotImplementedException(); } }
Se eu tentar usar desta desta maneira funciona:
<SolidColorBrush x:Key="Brush1" Color="{Binding Converter={StaticResource colorTransparencyConverter}, Mode=OneWay, Source={StaticResource ThemeAccent}}"/>
Porém se tento passar um valor assim dá erro no xaml:
<SolidColorBrush x:Key="Brush1" Color="{Binding ConverterParameter=100, Converter={StaticResource colorTransparencyConverter}, Mode=OneWay, Source={StaticResource ThemeAccent}}"/>
Alguem tem alguma solução para isso? Desde já agradeço!
sexta-feira, 3 de julho de 2015 00:46
Respostas
-
Provavelmente o erro está acontecendo ao tentar converter o valor passado por parâmetro para byte, tente fazer o cast da seguinte maneira.
SolidColorBrush scb = (SolidColorBrush)value; var opacidade = byte.Parse(parameter.ToString()); if (parameter != null) return Color.FromArgb(opacidade, scb.Color.R, scb.Color.G, scb.Color.B); else return Color.FromArgb(100, scb.Color.R, scb.Color.G, scb.Color.B);
- Marcado como Resposta Franklin Bitencourt sexta-feira, 3 de julho de 2015 16:51
sexta-feira, 3 de julho de 2015 14:27
Todas as Respostas
-
Olá Franklin, poderia postar qual erro está acontecendo?sexta-feira, 3 de julho de 2015 11:11
-
Specified cast is not valid.
Aparece isso na ErrorList e o trecho do código do xaml fica sublinhado o aplicativo roda mas a página não abre.
sexta-feira, 3 de julho de 2015 13:30 -
Provavelmente o erro está acontecendo ao tentar converter o valor passado por parâmetro para byte, tente fazer o cast da seguinte maneira.
SolidColorBrush scb = (SolidColorBrush)value; var opacidade = byte.Parse(parameter.ToString()); if (parameter != null) return Color.FromArgb(opacidade, scb.Color.R, scb.Color.G, scb.Color.B); else return Color.FromArgb(100, scb.Color.R, scb.Color.G, scb.Color.B);
- Marcado como Resposta Franklin Bitencourt sexta-feira, 3 de julho de 2015 16:51
sexta-feira, 3 de julho de 2015 14:27 -
Perfeito, Bruno Maschio Joaquin agora consegui muito obrigado!sexta-feira, 3 de julho de 2015 16:51