11

UWP XAML アプリケーションで x:Bind を使用する場合は、次の点を考慮してください。

interface IBaseInterface
{
    string A { get; set; }
}
interface ISubInterface : IBaseInterface
{
    string B { get; set; }
}
class ImplementationClass : ISubInterface
{
    public string A { get; set; }
    public string B { get; set; }
}

Page クラスには、次のものがあります。

public partial class MainPage : Page
{
    public ISubInterface TheObject = new ImplementationClass { A = "1", B = "2" };
    //All the rest goes here
}

MainPage XAML には、次のスニペットがあります。

<TextBlock Text={x:Bind Path=TheObject.A}></TextBlock>

これにより、次のコンパイラ エラーが発生します: XamlCompiler error WMC1110: Invalid binding path 'A': Property 'A' can't be found on type 'ISubInterface'

ただし、以下は機能します。

<TextBlock Text={x:Bind Path=TheObject.B}></TextBlock>

継承されたインターフェイス プロパティがコンパイラによって認識されないことが、UWP XAML プラットフォームの既知の制限であるかどうかは誰にもわかりませんか? それとも、これはバグと見なすべきですか? 既知の回避策はありますか?

助けていただければ幸いです。前もって感謝します!

4

3 に答える 3

9

はい、いくつかのテストと調査を行った後、X:Bind を使用すると、継承されたインターフェイス プロパティがコンパイラによって認識されないようです。

回避策として、次のように X:Bind の代わりに従来の Binding を使用できます。

.xaml で:

<Grid Name="MyRootGrid">
         <TextBlock Text="{Binding A}"></TextBlock>
</Grid>

xaml.cs で:

MyGrid.DataContext = TheObject;
于 2015-09-08T07:16:37.760 に答える
0

ファイルの先頭に xmlns を介して基本クラスの名前空間を追加します。

xmlns:base="using:Namespace.Of.Base.Class"
于 2018-06-28T16:23:43.783 に答える