Nugetパッケージマネージャーのサポートが追加されました。 次のコマンドでライブラリをインストールできます:
インストールパッケージWPExtensions
codeplexを使用してライブラリ、ソースコード、デモをダウンロードすることもできます。
通常どおり、ライブラリを使用するには、適切な名前空間宣言を追加する必要があります。
xmlns:WPExtensions = "clr-namespace:WPExtensions; assembly = WPExtensions"
次に、ライブラリの主要コンポーネントを検討します。
AdvancedApplicationBar
このコンポーネントについては、 オタク誌にすでに出版物がありました
何が起こったかを簡単に繰り返し、このバージョンの新機能について説明します。
AdvancedApplicationBarは、標準のApplicationBarのラッパーであり、いくつかの新しい機能を追加します。 コントロールとして実装されているため、メインコンテナー(通常はグリッド)内に配置する必要があります。
<phone:PhoneApplicationPage ...> <Grid x:Name="LayoutRoot" Background="Transparent"> ... <WPExtensions:AdvancedApplicationBar IsVisible="True" IsMenuEnabled="True"> <WPExtensions:AdvancedApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="Button 1"/> <WPExtensions:AdvancedApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="Button 2"/> <WPExtensions:AdvancedApplicationBarMenuItem Text="MenuItem 1"/> <WPExtensions:AdvancedApplicationBarMenuItem Text="MenuItem 2"/> </WPExtensions:AdvancedApplicationBar> </Grid> </phone:PhoneApplicationPage>
MenuItemを別のタグに割り当てる必要がないことに注意してください。
パノラマ/ピボットのサポート。
多くの場合、異なるパノラマ/ピボットアイテムがApplicationBarに異なるボタン/メニューのセットを表示するために必要です。 msdnでは、resに個別のApplicationBarを作成し、Actinアイテムを変更するときにApplicationBarを変更するソリューションが提案されています
ここで、PanoramaItem / PivotItem内の対応するボタンを移動して、ボタン/メニューがこのアイテム(ボタン1 /メニューアイテム1)のみに表示されるようにします。
この場合、残りのメニューボタンはデフォルトですべての要素の後に表示されます。 パノラマ内の要素の前にボタン/メニューを表示する必要がある場合は、メニュー/ボタンをパノラマ(ボタン2)に転送するだけです:
<phone:PhoneApplicationPage .... xmlns:WPExtensions="clr-namespace:WPExtensions;assembly=WPExtensions" ...> <Grid x:Name="LayoutRoot" Background="Transparent"> <!-- --> <WPExtensions:AdvancedApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="Button 2"/> <Grid x:Name="ContentPanel" Margin="12,0,12,0"> <controls:Panorama> <controls:PanoramaItem Header="Item1"> <Grid> ... <!-- PanoramaItem --> <WPExtensions:AdvancedApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="Button 1"/> <WPExtensions:AdvancedApplicationBarMenuItem Text="MenuItem 1"/> </Grid> </controls:PanoramaItem> <controls:PanoramaItem Header="Item2"> ... </controls:PanoramaItem> </controls:Panorama> </Grid> <WPExtensions:AdvancedApplicationBar IsVisible="True" IsMenuEnabled="True"> <!-- --> <WPExtensions:AdvancedApplicationBarMenuItem Text="MenuItem 2"/> </WPExtensions:AdvancedApplicationBar> </Grid> </phone:PhoneApplicationPage>
バインディングサポート
前回説明したように、AdvancedApplicationBarプロパティは元のプロパティとは異なり、データバインディングをサポートしています。
<WPExtensions:AdvancedApplicationBarIconButton Text="{Binding AppBarIconButtonText}" IconUri="{Binding AppBarIconButtonText}" Visibility="{Binding Visibility}" Command="{Binding DeleteCommand}" CommandParameter="42" />
フォーカスされている要素のバインディングの更新のサポート。
これは、新しいバージョンの革新の1つであり、特にDataBindingをアクティブに使用する場合に役立ちます。
この点についてさらに詳しく説明しましょう。
フォームにBindingを持つTextBoxがあるとします。
<TextBox Text="{Binding Text,Mode=TwoWay}" />
また、対応するボタンがフォーム上にあり、標準の<shell:ApplicationBarIconButtonボタンがあります。このボタンは、ハンドラ内でMessageBoxの添付プロパティのテキストを表示します。
MessageBox.Show(Text);
ApplicationBarIconButtonをクリックしたときとButtonをクリックしたときにテキストを編集し、編集モード(TextBoxでフォーカス)のままである場合、異なる結果が表示されます。 ApplicationBarIconButtonをタップすると、古いテキストが表示されていることがわかります。 これは、フォーカスが失われたときにのみテキストが更新され、標準のAppBarボタンがフォーカスを失わないためです。
AdvancedApplicationBarでは、ボタンをクリックするとフォーカスが失われます(フォーカスがページに転送されます)。ボタンが期待どおりに動作し、新しいテキストが表示されることがわかります。
必要に応じて、属性DisableLostFocus = "True"を使用してデフォルトの動作を返すことができます
<WPExtensions:AdvancedApplicationBarIconButton ... DisableLostFocus="True" />
モード=「デフォルト」IsVisible =「True」
デフォルト値とは異なるApplicationBar属性がさらに2つあります。
デフォルトでは、ApplicationBarのMode、IsVisible属性の値は、Mode = "Default" IsVisible = "True"に設定されます
AdvancedApplicationBarでは、これらの属性の値はデフォルトでは固定されておらず、次の条件に依存します。
ページやPanoramaItem / PivotItemにボタンがある場合、属性値はMode =“ Default” IsVisible =“ True”です
メニュー項目のみがある場合、属性値は等しくなります。Mode=“ Minimized” IsVisible =“ True”
ボタン/メニュー項目がない場合、属性IsVisible =“ False”の値
これで、AdvancedApplicationBarの概要は終わりです。 次は、TextBox拡張機能の説明です
テキストボックス拡張
かなり頻繁に、TextBoxの基本的な機能を見逃します。 将来、拡張機能のリストを拡張する予定ですが、これまでのところ、最も一般的な2つの問題のために、ライブラリに2つの拡張機能を追加しました。
これらの拡張機能は、単一の要素とコンテナ内の要素(Page、StackPanel、Grid)の両方に適用できます。 たとえば、ページ上のすべてのテキストフィールドの動作を設定する場合は、ページに属性を追加するだけです。
<phone:PhoneApplicationPage ... WPExtensions:Extensions.UpdateBindingOnChange="True" WPExtensions:Extensions.SelectAllOnFocus="True">
UpdateBindingOnChange
特定のモデルに添付されたテキストフィールドがあるとします。
<TextBox Text="{Binding Text,Mode=TwoWay}" />
多くの場合、テキストの変更中にモデルを更新する必要があります。これは通常、TextChangedイベントでBinding が更新されます。
これで、代わりに属性を使用できます:Extensions.UpdateBindingOnChange = "True"
<TextBox Text="{Binding Text,Mode=TwoWay}" WPExtensions:Extensions.UpdateBindingOnChange="True" />
SelectAllOnFocus
値を編集するとき、たとえば価格/数量などを編集するなど、最初に古い値を消去する必要があるアプリケーションをよく見ることができます。たとえば、10を20に置き換えます。 ユーザーは、もう一度タップして現在の値をそのままにするか、目的の値の設定を開始するだけで値を置き換えることができます。
これを行うために、GotFocusは通常、txtBox.SelectAll()メソッドが呼び出された場所でインターセプトされます。
これで、WPExtensions拡張機能を使用してこの動作を設定できます。Extensions.SelectAllOnFocus= "True"
<TextBox WPExtensions:Extensions.SelectAllOnFocus="True" />
MicrophoneWrapperマイクのサポート
最新バージョン1.3では、Audio名前空間(WPExtensions.Audio)のマイクにラッパーが追加されました。
ラッパーの使用も非常に簡単です。
var microphoneWrapper=new MicrophoneWrapper();
録音:
microphoneWrapper.Record();
停止:
microphoneWrapper.Stop();
サウンドの再生:
microphoneWrapper.Play();
録音されたサウンドを取得するには、2つの方法があります。
「生」または元のレコードを受信する:
microphoneWrapper.GetContent();
WAV形式でレコードを受信する:
microphoneWrapper.GetWavContent();
このライブラリが誰かに役立つことを願っています。それ自体でフィードバックがあれば嬉しいです。