ViewModel にはIsNotSupported
、センサーがサポートされていない場合に警告情報を表示するために使用されるという名前のブール型プロパティがあります。したがってBooleanToVisibilityConverter
、リソースに追加されたを使用します。
<phone:PhoneApplicationPage.Resources>
<local:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
</phone:PhoneApplicationPage.Resources>
警告を含むスタックパネルにバインドします。
<StackPanel x:Name="NotSupportedWarning" Visibility="{Binding IsNotSupported,
Converter={StaticResource BooleanToVisibilityConverter}}">
それはすべてうまく機能しますが、ページをロードし、センサーがサポートされている場合、警告はほんの一瞬表示され、その後消えます. このちらつきは、バインディングがまだ発生していないため、デフォルトで表示されていることが原因であることを知っています。
そのちらつきは地獄のように迷惑です...むしろ、デフォルトで折りたたまれ、警告が表示されるべきであることが明確になった後にのみ表示されるようにする必要があります。また、これによりバインディング後の 2 回目のレイアウト パスが回避されるため、パフォーマンスにプラスの影響が生じる可能性があります。
私はこの問題を何度も抱えていましたが、密接に関連しているこのSO の質問が見つかるまでインターネットで何も見つかりませんでしたが、Silverlight の代わりに Windows Phone を検索しても見つかりませんでした。問題と解決策はどちらも単純に見えるかもしれませんが、私はかなり長い間私を悩ませていたので、同じ問題に直面している他の人を助けるためにQ&A スタイルの質問を書くのは良い考えだと思いました.