0

私の XAML ページには、次のバインディングを持つテキスト ブロックがあります。

<TextBlock Width="{Binding ActualWidth, ElementName=SessionList, Mode=OneWay}" ...  />

これはグリッド ビューにバインドします。

<GridView x:Name="SessionList" ItemsSource="{Binding Sessions}"... />

ページが最初に読み込まれ、データが利用可能になると、テキスト ブロックが表示され、正しい幅になります。ページが読み込まれ、データがない場合、幅が制限されているため、テキスト ボックスは表示されません。

しかし...バックグラウンドでデータをロードし、しばらくすると(MVVMを介して)データが入ってくると、リストが表示されますが、テキストブロックの幅はそれに応じて変化せず、設定しTwoWayても効果はありません。

アイデア/ヒントはありますか?

4

2 に答える 2

0

ActualWidthは、WinRT内でバインドできるプロパティではありません。静的テキストとバインドされたテキストのどちらを表示しているかわからない。バインドされたテキストとデータがGridViewと同じである場合、データがnullの場合は削除されます。静的データの場合は、ValueConverterを使用して、null/空のデータに基づいてTextBlockの可視性を設定します

于 2012-06-17T05:19:40.623 に答える
0

このようなバインドの問題は通常、バインドできないプロパティ、つまり、依存プロパティではないか、INotifyPropertyChanged を実装していないプロパティが原因で発生します。なんでもいい。アタッチされた依存関係プロパティを使用するか、それで十分でない場合は動作を使用します。現在、動作は WinRT に含まれていませんが、その問題は既に解決されています;-)

于 2012-06-17T14:03:08.343 に答える