c# visual-studio-2010 mvvm multibinding

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>