the*_*lse 5 c# mvvm visual-studio-2010 multibinding
我有一个带有绑定功能的按钮,可以正常工作,请参见下文:
<Button x:Name="licenceFilterSet" Content="Search" Command="{Binding searchCommand}" CommandParameter="{Binding Path=Text, ElementName=licenseTextBox}" />
现在,我意识到我还需要另一条信息,因此我也需要发送a的值check-box。我这样修改了虚拟机:
<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>
以下是我的多转换器:
/// <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]);
    }
}
我究竟做错了什么。我收到以下错误,(它指向XAML中的MultiBinding-tag):
Cannot set MultiBinding because MultiValueConverter must be specified.
您必须实现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();
    }
}
然后在xaml中创建资源
 <Converter:SearchFilterConverter x:Key="searchFilterConverter" />
那么它应该工作
<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>
| 归档时间: | 
 | 
| 查看次数: | 8251 次 | 
| 最近记录: |