いくつかのデータバインディングについて少し助けが必要です。
だから私はカスタムオブジェクトの 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));
}
}
基本的に、私は 3 つの TextBlocks を持っています。そのうちの最初の 2 つは Name と Status にバインドされた Text を持ち、3 つ目は次のとおりです。
Visibility = {Binding Visible}
しかし、可視性プロパティを切り替えたいときはいつでも、可視状態から折りたたみ状態に切り替えることしかできず、それから再び切り替えることはできません。私のトグルは次のようになります。
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>
明らかに、これは大まかなテストですが、それでも機能しません。アイテムの実際の可視性の状態に関係なく、メッセージ ボックスには常に「可視」と表示されます。可視性の真の価値を得るにはどうすればよいですか?
誰かが何か考えを持っているなら、それは素晴らしいことです。
ありがとう。
編集: わかりやすくするために、Textblocks に 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 を変更することは問題外であることに注意してください。