【发布时间】:2011-05-29 09:47:45
【问题描述】:
我有这个问题。在 XAML 中,我在文本块上使用多转换器。我在文本块上绑定了 4 个字符串属性。
XAML 代码如下所示:
<TextBlock Style="{StaticResource InfosStyle}"
TextWrapping="Wrap"
>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource statusInfoConvertor}">
<Binding Path="StatusInfo.IsLogged" Mode="OneWay" UpdateSourceTrigger="PropertyChanged"/>
<Binding Path="StatusInfo.IsChating" Mode="OneWay" UpdateSourceTrigger="PropertyChanged"/>
<Binding Path="StatusInfo.RoomName" Mode="OneWay" UpdateSourceTrigger="PropertyChanged"/>
<Binding Path="StatusInfo.LastLogin" Mode="OneWay" UpdateSourceTrigger="PropertyChanged"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
转换器如下所示:
public class StatusInfoConverter : IMultiValueConverter
{
#region Implementation of IMultiValueConverter
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
bool isChatting=false, isLogged=false;
if (!string.IsNullOrEmpty(values[0].ToString()) && !string.IsNullOrWhiteSpace(values[0].ToString()))
isLogged = System.Convert.ToBoolean(values[0].ToString());
if (!string.IsNullOrEmpty(values[1].ToString()) && !string.IsNullOrWhiteSpace(values[1].ToString()))
isChatting = System.Convert.ToBoolean(values[1].ToString());
if (isLogged)
{
if (isChatting)
{
return string.Format(new CultureInfo("sk-Sk"), "Chatuje\nMiestnosť: {0}", values[2]);
}
return string.Format(new CultureInfo("sk-SK"), "Iba prihlásení");
}
return string.Format(new CultureInfo("sk-Sk"), "Offline");
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
问题是我在设计器中遇到了这个错误:
System.FormatException 字符串未被识别为有效的布尔值。 在 System.Boolean.Parse(字符串值) 在 System.Convert.ToBoolean(字符串值) 在 Spirit.Converters.StatusInfoConverter.Convert(Object[] values, Type targetType, Object parameter, CultureInfoculture) 在 C:\Users\Jan\Documents\Visual Studio 2010\Projects\C#\Pokec_Messenger\ver.beta\Pokec__Messenger\Spirit_v1 .2\Converters\Convertors.cs:第 160 行 在 System.Windows.Data.MultiBindingExpression.TransferValue() 在 System.Windows.Data.MultiBindingExpression.Transfer() 在 System.Windows.Data.MultiBindingExpression.UpdateTarget(布尔 includeInnerBindings) 在 System.Windows.Data.MultiBindingExpression.AttachToContext(布尔最后机会) 在 System.Windows.Data.MultiBindingExpression.MS.Internal.Data.IDataBindEngineClient.AttachToContext(布尔 lastChance) 在 MS.Internal.Data.DataBindEngine.Task.Run(Boolean lastChance) 在 MS.Internal.Data.DataBindEngine.Run(对象 arg) 在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(委托回调,对象 args,Int32 numArgs) 在 MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
第 160 行是:
159. if (!string.IsNullOrEmpty(values[0].ToString()) && !string.IsNullOrWhiteSpace(values[0].ToString()))
160. isLogged = System.Convert.ToBoolean(values[0].ToString());
我该如何解决这个问题。如果我编译这段代码并测试应用程序,它可以工作..但是我在设计器中的鞋视图有问题,因为我在 texblock 上绑定了空字符串变量并且还使用了转换器。
【问题讨论】: