0

いくつかのデータバインディングについて少し助けが必要です。

だから私はカスタムオブジェクトの 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 を変更することは問題外であることに注意してください。

4

1 に答える 1

1

問題は、さらに調査した結果、プロパティがコードの別のブランチによって設定されていたということです。

于 2012-11-19T15:35:06.613 に答える