J'ai ce problème. En XAML j'utilise multi converter sur textblock. Je lie 4 propriétés de chaîne sur le bloc de texte.Problème WPF avec designer-multiconverter
Code XAML ressembler à ceci:
<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>
Converter ressembler à ceci:
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
}
problème est que je reçois dans le concepteur cette erreur:
System.FormatException chaîne n'a pas été reconnu comme un booléen valide. at System.Boolean.Parse (valeur de chaîne) at System.Convert.ToBoolean (valeur de chaîne) à Spirit.Converters.StatusInfoConverter.Convert (valeurs Object [], type targetType, paramètre Object, CultureInfo culture) dans C: \ Utilisateurs \ Jan \ Documents \ Visual Studio 2010 \ Projets \ C# \ Pokec_Messenger \ ver.beta \ Pokec__Messenger \ Spirit_v1.2 \ Converters \ Convertors.cs: ligne 160 à System.Windows.Data.MultiBindingExpression.TransferValue() au système .Windows.Data.MultiBindingExpression.Transfer() à System.Windows.Data.MultiBindingExpression.UpdateTarget (Boolean includeInnerBindings) à System.Windows.Data.MultiBindingExpression.AttachToContext (Boolean lASTCHANCE) à System.Windows.Data.MultiBindingExpression. MS.Internal.Data.IDataBindEngineClient.AttachToContext (Boolea n lastChance) à MS.Internal.DataBindEngine.Task.Run (Boolean lastChance) à MS.Internal.Data.DataBindEngine.Run (objet arg) à System.Windows.Threading.ExceptionWrapper.InternalRealCall (rappel de délégué, args Object, Int32 numArgs) à MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen (Object source, méthode délégué, objet args, Int32 numArgs, délégué catchHandler)
sur la ligne 160 est:
159. if (!string.IsNullOrEmpty(values[0].ToString()) && !string.IsNullOrWhiteSpace(values[0].ToString()))
160. isLogged = System.Convert.ToBoolean(values[0].ToString());
Comment puis-je résoudre ce problème. Si je compile ce code et l'application de test, cela fonctionne ... mais j'ai un problème avec la vue de chaussure dans le concepteur parce que je lie la chaîne vide varibale sur texblock et utilise également le convertisseur.
Merci pour le conseil et l'aide –