ここでの問題は、 の生成コードに関連しています{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.
クラスは から派生していません。そのため、エラーがスローされます: . 最初のパラメータの型を に変更すると、すべてのコードがうまく機能します。
FlyoutFrameworkElementcannot 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したがって、この特別なシナリオで引き続き使用することをお勧めします。