只需要一些数据绑定的帮助。
所以我有一个自定义对象的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));
}
}
基本上我有三个TextBlock,其中前两个文本绑定到Name和Status,而第三个有:
Visibility = {Binding Visible}
但是每当我想切换visibility属性时,我只能将它从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}"/>
请记住,这些文本块包含在stackpanel和longlistselector中,因此只需更改t1.Visible是不可能的。
答案 0 :(得分:1)
经过更多调查后,问题最终导致该属性由另一个代码分支设置。