У меня есть эта проблема.В 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 [], тип targetType, параметр Object, CultureInfo culture) в 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 (Boolean includeInnerBindings) в System.Windows.Data.MultiBindingExpression.AttachToContext (Boolean lastChance) в System.Windows.Data.MultiBindingExindEnt.IDID.InID.AttachToContext (Boolean lastChance) в MS.Internal.Data.DataBindEngine.Task.Run (Boolean lastChance) в MS.Internal.Data.DataBindEngine.Run (объектный аргумент) в System.Windows.Threading.ExceptionWrapper.InternalRealCall (объект обратного вызова Delegate,args, Int32 numArgs) на MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen (Источник объекта, Метод делегата, Аргументы объекта, Int32 numArgs, Делегат catchHandler)
В строке 160:
159. if (!string.IsNullOrEmpty(values[0].ToString()) && !string.IsNullOrWhiteSpace(values[0].ToString()))
160. isLogged = System.Convert.ToBoolean(values[0].ToString());
Как решить эту проблему.Если я скомпилирую этот код и протестирую приложение, оно будет работать ... но у меня есть проблема с представлением обуви в конструкторе, потому что я связываю пустую строковую переменную в texblock, а также использую конвертер.