1

ObservableCollection を拡張し、ToString() をオーバーライドするカスタム コレクションがあります。このコレクションを TextBox の Text プロパティにバインドすると、次のようになります。

  <TextBox IsReadOnly="True" Text="{Binding Satellites, Mode=OneTime}"/>

サテライトがこのカスタム コレクションのインスタンスになる場合、(Collection)ToString() のカスタム実装を呼び出す代わりに、テキスト ボックスが表示されます。

これは予想される動作ですか?

4

2 に答える 2

1

プロパティはCollectionView、コレクションに直接バインドされているのではなく、バインドされている可能性があります。

コレクションクラスにプロパティを追加して、表示するテキストを返します。

public string DisplayText
{
   get { return ToString(); }
}

次に、そのプロパティにバインドします。

<TextBox IsReadOnly="True" Text="{Binding Satellites.DisplayText, Mode=OneTime}"/>
于 2012-11-21T14:53:40.380 に答える
0

おそらく、WPF はバインドされたオブジェクトのタイプを調べ、IEnumerable を確認すると、ToString() を呼び出さないだけです。

しかし、コンバーターを使用して同じ結果を得ることができると思います (そのコレクションを一度だけバインドしたい場合)。IValueConverterを見てください。

于 2012-11-21T14:49:49.507 に答える