просто нужна небольшая помощь с привязкой данных.
Итак, у меня есть ObservableCollection настраиваемого объекта. Свойства объекта следующие:
/// <summary>
/// Name
/// </summary>
private string _name;
public string Name
{
get
{
return _name;
}
set
{
if (value != _name)
{
_name = value;
NotifyPropertyChanged("Name");
}
}
}
/// <summary>
/// Status
/// </summary>
private int _status;
public int Status
{
get
{
return _status;
}
set
{
if (value != _status)
{
_status = value;
NotifyPropertyChanged("Status");
}
}
}
/// <summary>
/// Visible information
/// </summary>
private Visibility _visible;
public Visibility Visible
{
get
{
return _visible;
}
set
{
if (value != _visible)
{
_visible = value;
NotifyPropertyChanged("Visible");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (null != handler)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
И в основном у меня есть три текстовых блока, первые два из которых имеют текст, привязанный к имени и статусу, а третий имеет:
Visibility = {Binding Visible}
Но всякий раз, когда я хочу переключить свойство видимости, я могу только переключить его из состояния Visible в Collapsed, а затем не снова. Мой переключатель выглядит так:
ItemViewModel l = ((sender as LongListSelector).SelectedItem) as ItemViewModel;
MessageBox.Show(l.Visible.ToString());
if (l.Visible == Visibility.Collapsed)
l.Visible = Visibility.Visible;
else
l.Visible = Visibility.Collapsed;
Примечание. ItemViewModel - это настраиваемый класс для коллекции, т. Е.
ObservableCollection<ItemViewModel>
Очевидно, это всего лишь грубый тест, но он все равно не работает. В окне сообщения всегда отображается «Видимый» независимо от реального состояния видимости элемента. Как я могу получить его, чтобы получить реальное значение видимости?
Если у кого-то есть идеи, это было бы здорово.
Спасибо.
РЕДАКТИРОВАТЬ: добавление XAML для текстовых блоков для ясности:
<TextBlock Text="{Binding Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" FontSize="20"/>
<TextBlock Text="{Binding Status}" TextWrapping="Wrap" Margin="12,-6,280,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
<TextBlock x:Name="t1" Text="Test for visibility" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}" Visibility="{Binding Visible}"/>
Имейте в виду, что эти текстовые блоки заключены в стековую панель и longlistselector, поэтому о простом изменении t1.Visible не может быть и речи.
Visible
? Итак, проблема [может быть] в том, что ваше свойство не меняется, а не в том, что привязка не работает? - person CodingGorilla   schedule 19.11.2012Visible
значениеCollapsed
, и оно исчезнет, ноMessageBox
по-прежнему говорит, что этоVisible
? Но вы никогда не сможете вернуть его наVisible
? - person CodingGorilla   schedule 19.11.2012