0

私のシナリオは非常に単純です。実際、問題はないと思っていましたが、問題はありません。誰か助けてもらえますか?

MainPageはこれで始まります:

namespace PhoneApp
{
    public partial class MainPage : PhoneApplicationPage { /* snip */ }
}

このページの後半には、次の簡単な方法があります。

private void MakeSound(object sender, MouseButtonEventArgs e)

大丈夫、大丈夫です。

しかし、私SettingsSample.xamlの場合、メソッド MakeSoundviaSelectionChangedプロパティを呼び出す ListBoxItem があります。VSスタジオは、「イベントハンドラーMakeSoundisがクラスPhoneApp.SettingsSampleに見つからない」と言っています

このページのコードは次で始まります。

namespace PhoneApp
{
    public partial class SettingsSample : PhoneApplicationPage { /* snip */ }
}

のメソッドのコードをコピーしてもなぜかSettingsPage.xaml.csうまくいきませんが、それぞれのコードが同じ Namespace にあるので、 で説明されているメソッドを使用できるはずだと思います。MaingePage.xaml.cs

追加してみました

using PhoneApp;

SettingsSample.xaml.cs で。特別頭がいいわけじゃないけど、他に思いつかない

4

1 に答える 1

0

イベント関数を読み取りEventClickOnMyListBox、ページのコード ビハインドに配置する必要があります。この関数は、関数を呼び出しますmakeasound(必要な場所に置くことができます)。また、別のイベントまたは関数によって呼び出される可能性があります。

イベント自体とイベントが行うことの間にはセマンティクスの違いがあります。あなたのイベントは ではありません makeasound。あなたのイベントは音を発生させます。

makeasound視覚効果を追加するためにポップアップを追加したい場合、関数を直接呼び出した場合はスタックしますEventClickOnMyListBoxが、他のシナリオでは行を追加するだけです。

そのため、xaml はそのように機能し、囲んでいるクラス内のオブジェクトのみを参照できます (または、私がそれを知らない方法があり、それを必要としなかった場合)。コード ビハインド コードを最小限に抑える必要があります (これは、この道をさらに進めたい場合のMVVM パターンの考え方です)。


あなたのコメントに返信して、ここにあなたを始めるためのいくつかのコードがあります:

イベントはページのコード ビハインドにある必要があり、関数ではなく関数SettingSampleを呼び出す必要あります。makeasoundmakeasound

private void MenuItem_Click(object sender, MouseButtonEventArgs e)
{
    Whatever.Myclass.MakeASound (blabla); // So typically MakeASound would be static
}

private void MakeSound(object sender, MouseButtonEventArgs e)メイン ページでも同じことが言えます。クリックのイベントとしてyour を使用するのではなく、上記と同じようにイベント ハンドラーを使用します。

一歩下がってみれば、それが非常に自然なことであることがわかるでしょう。2 つのことで同じことをしたいのです。ただし、言語に関連する理由から、最初のものとまったく同じものにすることはできません (理由を理解するには、C# と XAML について読んでください)

したがって、最初の 2 つのコンポーネントからアクセスできる 3 番目のコンポーネントに機能を配置します。そして、それぞれからこのコンポーネントを呼び出します。このようにして、両方が同じ機能へのアクセスを共有し、誰もが満足します.

于 2013-02-21T01:55:50.097 に答える