簡體   English   中英

多綁定生成“無法設置多綁定,因為必須指定 MultiValueConverter”

[英]Multibinding generates “Cannot set MultiBinding because MultiValueConverter must be specified”

我有一個帶綁定的按鈕,效果很好,見下文:

<Button x:Name="licenceFilterSet" Content="Search" Command="{Binding searchCommand}" CommandParameter="{Binding Path=Text, ElementName=licenseTextBox}" />

現在我意識到我還需要另一條信息,因此我還需要發送check-box的值。 我像這樣修改了VM:

<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>

我知道這個線程很舊,但昨天我遇到了同樣的問題,所有內容都正確編寫,但 WPF 仍然拒絕定位轉換器。 幫助我的是按以下方式分配轉換器:

<MultiBinding Converter="{local:ButtonParametersMultiValueConverter}">

那解決了這個問題。

這不是 IMultiValueConverter 接口的正確實現。

正確的一種是:

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)
   {
   }
}

參考這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM