c# - Multibinding genera "No se puede establecer MultiBinding porque se debe especificar MultiValueConverter"
visual-studio-2010 mvvm (2)
Esa no es la implementación correcta de la interfaz IMultiValueConverter.
El correcto es:
public class SearchFilterConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
....
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
}
}
Referencia aquí .
Soy bastante nuevo en MVVM
así que, por favor, MVVM
un MVVM
si la pregunta no está clara, háganmelo saber y lo aclararé.
Tengo un botón con encuadernación que funciona bien, ver a continuación:
<Button x:Name="licenceFilterSet" Content="Search" Command="{Binding searchCommand}" CommandParameter="{Binding Path=Text, ElementName=licenseTextBox}" >
Ahora me he dado cuenta de que necesito otra paz de información, así que también debo enviar el valor de una check-box
. Modifiqué la VM así:
<Button x:Name="licenceFilterSet" Content="Search" Command="{Binding licenseSearchCommand}">
<Button.CommandParameter>
<MultiBinding Converter="{StaticResource searchFilterConverter}">
<Binding Path="Text" ElementName="licenseTextBox" />
<Binding Path="IsEnabled" ElementName="regularExpressionCheckBox" />
</MultiBinding>
</Button.CommandParameter>
</Button>
A continuación está mi multi convertidor:
/// <summary>
/// Converter Used for combining license search textbox and checkbox
/// </summary>
public class SearchFilterConverter : IMultiValueConverter
{
public object Convert(object[] values)
{
return new Tuple<String, bool>((String)values[0], (bool)values[1]);;
}
}
Qué estoy haciendo mal. Recibo el siguiente error, (que apunta a mi etiqueta MultiBinding en axml):
Cannot set MultiBinding because MultiValueConverter must be specified.
tienes que implementar IMultiConverter
public class SearchFilterConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
return new Tuple<String, bool>((String)values[0], (bool)values[1]);;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
luego crea el recurso en xaml
<Converter:SearchFilterConverter x:Key="searchFilterConverter" />
entonces debería funcionar
<Button x:Name="licenceFilterSet" Content="Search" Command="{Binding licenseSearchCommand}">
<Button.CommandParameter>
<MultiBinding Converter="{StaticResource searchFilterConverter}">
<Binding Path="Text" ElementName="licenseTextBox" />
<Binding Path="IsEnabled" ElementName="regularExpressionCheckBox" />
</MultiBinding>
</Button.CommandParameter>
</Button>