4

この質問の解決策を使おうとすると、奇妙な問題が発生します。(便宜上、ここに複製されています)

これは、ListView右クリックイベントを飲み込み、AppBarが開かないようにする問題の解決策です-次のイベントを継承ListViewしてオーバーライドするクラス:OnRightTappedListViewItem

public class MyListView : ListView
{
    protected override DependencyObject GetContainerForItemOverride()
    {
        return new MyListViewItem();
    }
}

public class MyListViewItem : ListViewItem
{
    protected override void OnRightTapped(Windows.UI.Xaml.Input.RightTappedRoutedEventArgs e)
    {
        base.OnRightTapped(e);
        e.Handled = false; // Stop 'swallowing' the event
    }
}

<CustomControls:MyListView
    x:Name="ItemsList"
    ...
    SelectionMode="Single"
    RightTapped="MyListView_RightTapped">
</CustomControls:MyListView>

説明どおりに、CustomControlsという新しい名前空間に、指定されたとおりにカスタムコントロールを実装しました。その名前空間をMainPage.xamlに追加しました

xmlns:CustomControls="using:CustomControls"

次に、コードビハインドで「ItemsList」を参照しようとすると、コンパイルエラーが発生します

The name 'ItemsList' does not exist in the current context

私は、ソリューションの構築、再構築、クリーンアップ、ソリューションのクローズと再開、メインプロジェクトの名前空間の下にクラスを配置することを試みましたが、すべて役に立ちませんでした。

要約すると、MainPage.csはMainPage.xamlのカスタムコントロールを表示できません

更新2:無関係な問題を削除するために質問を書き直しました。また、実際の問題を反映するようにタイトルを変更しました。

4

1 に答える 1

9

私は使用していましたが、使用Nameする必要がありましたx:Name。どうやら、カスタムコントロールとユーザーコントロールは、コードビハインドに表示されるのx:Nameではなく、使用する必要があります。Name

ここでの違いの詳細:

WPFでは、x:Name属性とName属性の違いは何ですか?

于 2012-10-04T10:52:45.577 に答える