ここでの問題は、 の生成コードに関連しています{x:Bind}
。
私たちが知っているように{x:Bind}
、生成されたコードを使用してその利点を実現します。これらのコードは、(C# の場合) <view name>.g.csのような名前のobjフォルダーにあります。詳細については、{x:Bind} マークアップ exstrong texttensionを参照してください。
.g.csファイルに移動すると(私が使用FlyoutHelper
したMainPage
ので、私の側ではMainPage.g.cs です)、エラーがメソッドにあることがわかりますSet_FlyoutDemoSample_FlyoutHelper_Parent
。このメソッドはコンパイル時に生成されFlyoutDemoSample
、私のプロジェクトの名前空間です。その名前はあなたの側で異なる場合があります。

このメソッドの定義に行くと、このメソッドの最初のパラメーターの型が であることがわかりますFrameworkElement
。
public static void Set_FlyoutDemoSample_FlyoutHelper_Parent(global::Windows.UI.Xaml.FrameworkElement obj, global::Windows.UI.Xaml.FrameworkElement value, string targetNullValue)
{
if (value == null && targetNullValue != null)
{
value = (global::Windows.UI.Xaml.FrameworkElement) global::Windows.UI.Xaml.Markup.XamlBindingHelper.ConvertValue(typeof(global::Windows.UI.Xaml.FrameworkElement), targetNullValue);
}
global::FlyoutDemoSample.FlyoutHelper.SetParent(obj, value);
}
ただし、 を使用する場合FlyoutHelper
、ここで設定するパラメータはFlyout
.
クラスは から派生していません。そのため、エラーがスローされます: . 最初のパラメータの型を に変更すると、すべてのコードがうまく機能します。
Flyout
FrameworkElement
cannot convert from 'Windows.UI.Xaml.Controls.Flyout' to 'Windows.UI.Xaml.FrameworkElement'
DependencyObject
public static void Set_FlyoutDemoSample_FlyoutHelper_Parent(global::Windows.UI.Xaml.DependencyObject obj, global::Windows.UI.Xaml.FrameworkElement value, string targetNullValue)
{
if (value == null && targetNullValue != null)
{
value = (global::Windows.UI.Xaml.FrameworkElement) global::Windows.UI.Xaml.Markup.XamlBindingHelper.ConvertValue(typeof(global::Windows.UI.Xaml.FrameworkElement), targetNullValue);
}
global::FlyoutDemoSample.FlyoutHelper.SetParent(obj, value);
}
ただし、これらのコードは自動的に生成されるため、このプロジェクトを再構築しても同じエラーが発生します。これが UWP の潜在的なバグかどうかはわかりませんが、修正するためにできることは何もないと思います。Binding
したがって、この特別なシナリオで引き続き使用することをお勧めします。