問題タブ [xbind]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - UWP XAML x:Bind の継承されたインターフェイスが認識されない
UWP XAML アプリケーションで x:Bind を使用する場合は、次の点を考慮してください。
Page クラスには、次のものがあります。
MainPage XAML には、次のスニペットがあります。
これにより、次のコンパイラ エラーが発生します: XamlCompiler error WMC1110: Invalid binding path 'A': Property 'A' can't be found on type 'ISubInterface'
ただし、以下は機能します。
継承されたインターフェイス プロパティがコンパイラによって認識されないことが、UWP XAML プラットフォームの既知の制限であるかどうかは誰にもわかりませんか? それとも、これはバグと見なすべきですか? 既知の回避策はありますか?
助けていただければ幸いです。前もって感謝します!
xaml - DataTemplates を使用した x:Bind の ElementName の代替
従来の {Binding} 構文を使用する場合、要素名を指定してページ上の特定のコントロールを指すことができ、そのプロパティにアクセスできます。たとえば、ページに名前が付けられている場合、次のpage
ことができます。
{x:Bind}構文では、
x:Bind では、バインディング式の一部として ElementName=xxx を使用する必要はありません。x:Bind を使用すると、要素の名前をバインディングのパスの最初の部分として使用できます。これは、名前付き要素がルート バインディング ソースを表すページまたはユーザー コントロール内のフィールドになるためです。
したがって、上記の例の {x:Bind} は次のようになります。
これは、データ テンプレート (ListView の ItemTemplate など) 内に収まるまでは正常に機能します。その場合、指定されたデータ型を探しているため機能しなくなりPage
、次のエラーが発生します (データ型が であると仮定しますcustomer
):
XamlCompiler エラー WMC1110: 無効なバインディング パス 'Page.Name': プロパティ 'Page' が型 'Customer' で見つかりません
データ テンプレートで {x:Bind} 構文を使用し、データ テンプレート外のアクセス コントロールを使用するソリューションは何ですか?
サンプルコードはこちらから入手できます(特定のコミットに注意してください)
c# - バインディングと x:Bind、いずれかが機能しています
Bindings と x:Bind を使用していくつかのテストを行っているところ、興味深いことがわかりました。
XAML
最初の x:Bind は、プロパティ Currencies を持つプロパティ Currencies (モデル名 CurrencyList) を持つプロパティ CurrenciesViewModel (モデル名 CurrencyListViewModel) を持つ viewModel で、ObservableColletion です。
これは、このようなオブジェクトを追加するときに機能します
しかし、1 つのメソッドを使用して DataProvider (xml を使用した単純な残り) でモデルをダウンロードするとき
したがって、メイン ViewModel の最初のプロパティ CurrencyViewModel は次のようになります
それから私のlistViewは空です! データがダウンロードされているかどうかを確認しましたが、そうです... x:Bind を Binding に変更しましたが、すべてが機能しています。
必要に応じて、すべてのクラスをコピーして貼り付けることができます。でも教えてくださいwww
c# - プロパティなしで x:Bind を使用する方法
Windows 8.1では、これを行うことができます
次に、イベント Grid_OnTapped 内で、Grid の Tag プロパティを使用して、どの項目がタップされているかを知ることができます。
しかし、x:Bind に変更すると、機能しなくなります。スローされる例外: 「オブジェクト参照がオブジェクトのインスタンスに設定されていません」
さらにテストすると、このコードはクラスの名前を表示します
しかし、それだけが機能します
助けてください。ありがとう
xaml - 型パラメータを持つページ
UWP -> x:Bind の新機能を使いたいです。そのためには、すべてのページに ViewModel プロパティが必要です (チュートリアルで説明されているように)。コードの重複を避けるために、次のように基本クラスを確立しました。
ご覧のとおり、この BasePage クラスには「VM」というプロパティが含まれており、プロパティのタイプは BaseVM です。したがって、派生クラスごとに VM プロパティを定義する必要はありません。
次に、次のように xaml で定義された派生ページ 'MainPage' を作成しました。
そうすることで、Resharper の Intellisense でさえ、MainPage.xaml の「MainVM」からプロパティを提供してくれるので、次のように記述できます。
残念ながら、プロジェクトをビルドしようとすると、MainPage.gics でエラーが発生します。
重大度コード 説明 プロジェクト ファイル行エラー CS0305 ジェネリック型 'BasePage' を使用するには、1 つの型引数が必要です Realarm D:...\Realarm\obj\x86\Debug\View\Pages\MainPage.gics 13
何か助けはありますか?
uwp - UWP x:Bind twoway にはコンバーターが必要ですか?
ViewModel.SeletedLogItem プロパティにバインドされたコンテンツ コントロールを使用しています。このプロパティは、DataTemplate の DataType で指定された LogItemDTO タイプです。バインディングを に設定するMode=TwoWay
と、コンバーターが必要だというコンパイル エラーが発生します。
無効なバインディング パス 'ViewModel.SelectedLogItem': コンバーターなしでタイプ 'LifeLog.Data.DomainEntities.LogItemDTO' を 'System.Object' にバインドできません
以下は、ビューモデルの一部とコンテンツ コントロールの xaml です。
binding - x:Bind 設計時の問題
UWP アプリをビルドしようとしていますが、現在、リソース ディクショナリで x:Bind を使用して DataTemplate を使用しようとすると、デザイナーの例外が発生します。
それぞれのコード ビハインドを使用してリソース ディクショナリ "ItemTemplates.xaml" を作成しました (x:Bind の初期化を確実にするため)。このファイルには、テンプレートが 1 つだけ含まれています。
次に、このリソース ディクショナリを次のように App.xaml に追加しました。
デザイナーが奇妙な例外をスローするため、プロジェクトは使用できなくなりましたが、プロジェクトをクリーンアップして再構築し、HomeView.xaml ページに移動すると、デザイナーは既定の "ToString()" アイテムのみを表示します (基本的に、リスト ビューには 3 回だけが含まれます)。 ListView のテキスト "Models.Categories") と、ListView のItemTemplateプロパティに下線が引かれ、次のエラーが表示されます。
App.xaml に戻ると、(<resources:ItemTemplates />
行の)下線がもう 1 つ表示されます。
実際にアプリを実行すると問題はなく、すべてが完全に機能するため、どちらのエラーも無意味です。これまでに見つけた唯一の回避策は、従来の方法と「コンパイル済み」の方法の両方で ResourceDictionary を 2 回含めることです。
このソリューションは機能し、設計時と実行時の両方ですべてが機能しますが、非常に面倒で、より安全なアプローチが必要であるか、些細なことを見逃していると本当に思います。
Visual Studio 2015 Update 1 を実行しており、最新の UWP SDK がインストールされています。プロジェクトのターゲットはビルド 10240 です。
編集:デザイナーが非常に頻繁にスローして完全にクラッシュする別の例外:
StackTrace の出力によると、これは ItemTemplates.xaml.cs コード内、特に生成されたメソッド内で発生しますProcessBindings
。ここでも、プロジェクトは正常にコンパイルおよび実行されますが、デザイナーは出力を表示しようとさえしません。