[英]Multibinding error in the output
我有一個根據兩個屬性啟用的按鈕。 我將 MultiBinding 與轉換器一起使用。
一切正常,但 output 一直說:
System.Windows.Data Error: 5 : Value produced by BindingExpression is not valid for target property.; Value='' MultiBindingExpression:target element is 'HGCCommandButton' (Name='btnEliminar'); target property is 'IsEnabled' (type 'Boolean')
這里有一些類似問題的問題: WPF MultiBinding Fails。 為什么?
任何簡單的解決方案,或者我應該在 ViewModel 中創建邏輯並只綁定到一個屬性?
代碼:XAML:
<utils:HGCCommandButton x:Name="btnEliminar">
<utils:HGCCommandButton.IsEnabled>
<MultiBinding Converter="{StaticResource MultiValueIsEnabledConverter}"
ConverterParameter="NotEnabledIfIsFromInfoGestionOrIsNew">
<Binding Path="IsNew" />
<Binding Path="IsAbonado" />
</MultiBinding>
</utils:HGCCommandButton.IsEnabled>
</utils:HGCCommandButton>
轉換器:
public class MultiValueIsEnabledConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (parameter!=null)
{
if (values[0] == DependencyProperty.UnsetValue || values[1] == DependencyProperty.UnsetValue) return "";
var sel = (MultiValueIsEnabledConverterNames)Enum.Parse(typeof(MultiValueIsEnabledConverterNames), parameter.ToString());
switch (sel)
{
...
case MultiValueIsEnabledConverterNames.NotEnabledIfIsFromInfoGestionOrIsNew:
return (bool)NotEnabledIfIsFromInfoGestionOrIsNew(values[0], values[1]);
default:
throw new ArgumentOutOfRangeException();
}
}
return false;
}
private static object NotEnabledIfIsFromInfoGestionOrIsNew(object isFromIG, object isNew)
{
if ((isFromIG != null) && !(bool)isFromIG)
{
if ((isNew != null) && !(bool)isNew)
{
return !((bool)isFromIG && (bool)isNew);
}
return false;
}
return false;
}
ViewModel 變量只是兩個布爾值
這是一個很奇怪的ConverterParameter
,您為Converter
引用的StaticResource
實際上是您發布其代碼的轉換器的實例嗎? 該錯誤聲稱該值不是布爾值,並且該方法本身只能返回一個布爾值,所以我懷疑這里是否發現了錯誤。
Convert
方法中的代碼可以返回除布爾值以外的任何其他內容嗎? 如果可能的話,你需要避免它。
編輯:這就是問題所在:
if (values[0] == DependencyProperty.UnsetValue || values[1] == DependencyProperty.UnsetValue) return "";
您返回一個與 boolean 屬性不兼容的空字符串,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.