.net - transmision - ¿Cómo pasar un valor específico al parámetro del convertidor?
meta tags seo (2)
Creé una Persona de clase que se ve así:
public class Person
{
public enum GenderType
{
Female,
Male
}
public string Name
{
get; set;
}
public GenderType? Gender
{
get; set;
}
}
Luego, creé una plantilla de datos que presentará objetos de tipo Persona.
Aquí está el código XAML:
<DataTemplate
x:Key="personTemplate"
DataType="{x:Type model:Person}">
<StackPanel>
<RadioButton
Content="Female"
IsChecked="{Binding Path=Gender,
Converter={StaticResource genderConverter},
ConverterParameter=???}"/>
<RadioButton
Content="Male"
IsChecked="{Binding Path=Gender,
Converter={StaticResource genderConverter},
ConverterParameter=???}"/>
<RadioButton
Content="Not specified"
IsChecked="{Binding Path=Gender,
Converter={StaticResource genderConverter},
ConverterParameter=???}"/>
</StackPanel>
</DataTemplate>
Por supuesto, el ???
s en el código no funcionará :) El problema es que quiero crear un convertidor genderConverter
que compare el valor dado, es decir, personObject.Gender
, con el valor proporcionado Person.GenderType
proporcionado en el parámetro y devolver true
si los valores partido.
No sé cómo hacer que el parámetro convertidor pase Person.GenderType.Female
, Person.GenderType.Male
y null
, para el primer, segundo y tercer botón de Person.GenderType.Male
, respectivamente.
Como está creando su propio convertidor, ¿por qué no simplemente envía un bool nullable como parámetro del convertidor?
entonces para male,female,not specified
envíe true,false,null
.
Si no quieres hacer eso, tendrás que hacer referencia a tu espacio de nombres al principio así:
xmlns:myNamespace="clr-namespace:MyNamespace"
y entonces
<RadioButton
Content="Male"
IsChecked="{Binding Path=Gender,
Converter={StaticResource genderConverter},
ConverterParameter=x:Static myNamespace:Person.GenderType.Male}"/>
para sus botones de radio.
Intente usar x:Static
extensión de marcado x:Static
:
<RadioButton
Content="Female"
IsChecked="{Binding Path=Gender,
Converter={StaticResource genderConverter},
ConverterParameter={x:Static model:GenderType.Female}}"/>
O bien, podría pasar una cadena y usar Enum.Parse
para convertir esa cadena al tipo de enumeración en el convertidor:
<RadioButton
Content="Female"
IsChecked="{Binding Path=Gender,
Converter={StaticResource genderConverter},
ConverterParameter=Female}"/>
-
GenderType gender = (GenderType)Enum.Parse(typeof(GenderType), parameter.ToString());