У меня есть типичная метка, которую я хочу контролировать ее видимостью с помощью свойства, которое является пустым или пустым.
Я установил контрольные точки, а также зарегистрировал, и кажется, что возвращаемое значение истинно, но все жеэто не показывает элемент. Когда я прокручиваю свой список, тогда они видны, но иногда все еще не видны .. Есть несколько элементов, иногда некоторые из них видны, иногда нет ... это можно изменить ..
здесь мой конвертер
public class TestBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var result= value != null && !value.ToString().Equals("");
Console.WriteLine("Result: " +result);
return result;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
и свойство
public string LocalizedReadoutDescription
{
get
{
Console.WriteLine("Description: " + dataItem.Description);
string localizedDescription = null;
if (!string.IsNullOrEmpty(this.dataItem.Description))
{
string[] descriptionKeyParts = this.dataItem.Description.Split(';');
localizedDescription = descriptionKeyParts[0];
if (!string.IsNullOrEmpty(localizedDescription))
{
localizedDescription =
this.getLocalizedString(Constants.Localization.LogicalItemDescriptionFmt,
localizedDescription);
}
}
return localizedDescription;
}
}
и код Xaml
<ContentView.Resources>
<converters:TestBooleanConverter x:Key="nullToBoolConverter"/>
.....
</ContentView.Resources>
.....
<StackLayout Orientation="Horizontal" Margin="4,2" Grid.Column="1" VerticalOptions="StartAndExpand"
HorizontalOptions="FillAndExpand" Spacing="0" BackgroundColor="White">
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Tapped="Help_Tapped" CommandParameter="{Binding}"/>
</StackLayout.GestureRecognizers>
<Label x:Name="HelpLabel" Style="{StaticResource InfoIconLabel}" Text="{x:Static resx:UI.Icon_Info}" Margin="0"
HorizontalOptions="EndAndExpand" VerticalOptions="Start" IsVisible="{Binding LocalizedReadoutDescription,
Converter={StaticResource nullToBoolConverter}}" FontSize="Micro" LineBreakMode="NoWrap"/>
</StackLayout>
Я чувствую, что даже он возвращает true, но он использует значение предыдущих строк. но только эта часть не обновляется. имена меток, значения обновляются, но видимость только некоторых элементов не обновляется ..
где моя ошибка?
Обновление:
IСоздано событие для изменения свойства метки, которую я хочу контролировать ее видимостью. Я вижу, что IsVisible всегда имеет значение true, но в графическом интерфейсе виден только один элемент ... но когда я прокручиваю, несколько видны, и когда я прокручиваю больше, все элементы видны, как и должно быть
private void HelpLabel_OnPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName.Equals("IsVisible"))
{
// I check => ((Xamarin.Forms.Label)sender).IsVisible
//always true
}
}