Visual Studio 2012 で C# と XAML を使用しています
MS は 2012 年に Visual Studio の多くを変更したため、Web 上で有効なソリューションを見つけることができませんでした。私は C#/XAML を初めて使用するので、データ バインディングに精通していません。
MainPage.xaml ページに App.xaml.cs ファイルの変数を表示する必要があります。これらの変数は 100 ~ 300 ミリ秒ごとに状態が変わるため、データが変更されるたびにページを更新する必要があるのは、おそらく良い考えではありません。
私のプロジェクトのコードスニペットは次のとおりです。
App.xaml.cs は変数を定義し、dispatcherTimer でそれらを変更します。
namespace OpenGOTO
{
public partial class App : Application
{
public static string DateStrZ = "";
public static string FubarTest { get; set; }
}
}
MainPage.xaml (常に現在のウィンドウであるとは限りません) には、TextBlock があります。
<TextBlock x:Name="UTC_Data" Text="2012-08-01 03:29:07Z" Padding="5" Style="{StaticResource TextBlockStyle1}" />
MainPage.xaml.cs には、フィールドを更新する dispatcherTimer によって呼び出されるルーチンがあります。
public void SetFieldsTick()
{
UTC_Data.Text = App.DateStrZ;
}
これを次のように変更すると
public static void SetFieldsTick()
App.xaml.cs のディスパッチャータイマーから呼び出すことができるようにすると、次のエラー メッセージが表示されます。
非静的フィールド、メソッド、またはプロパティ「OpenGOTO.MainPage.UTC_Data」にはオブジェクト参照が必要です
どうすればよいですか:
- データをフィールドにバインドします (ウィンドウ全体を更新しなくても自動的に更新されますか?)
- XAML ページのフィールドを設定する MainPage.xaml.cs のルーチンを App.xaml.cs の dispatcherTimer が呼び出せるように、正しい参照を作成します。