WinUI3 メモ x:Bind - DrumMidiEditor/DrumMidiEditorApp GitHub Wiki

参考URL
https://docs.microsoft.com/ja-jp/windows/uwp/data-binding/function-bindings

Mode

  • OneTime
      Page読み込み時に一度だけデータ取得

  • OneWay
      Page読み込み時に一度だけデータ取得。
      データに対して変更があった際に、画面側にも反映する。
      但し、自動で変更してくれるわけではなく意図的に通知が必要となる。

  • TwoWay
      OneWay の機能+画面上で入力した値は、データに書き込みに行く。
      但し、Changedイベントなどでは、データに書き込みはまだ行われていない為
      イベント内でデータを使用する場合には注意が必要。

  ListView_SelectionChanged イベントなどではデータの書き換え後に処理される。

<TextBox Text="{x:Bind MusicInfo.BgmFilePath, Mode=TwoWay}" 
  TextChanged="MusicInfoBgmFilePathTextBox_TextChanged" />
public sealed partial class PageMusic : Page, INotifyPropertyChanged
{
	public event PropertyChangedEventHandler? PropertyChanged = delegate { };

	public void OnPropertyChanged( [CallerMemberName] string? aPropertyName = null )
	{
		PropertyChanged?.Invoke( this, new( aPropertyName ) );
	}

	// MusicInfoの情報に変更あった際に実行し、意図的にバインド変数に変更があったよと知らせる。
	public void ReloadMusicInfo()
	{
		OnPropertyChanged( "MusicInfo" );
		//OnPropertyChanged( "MusicInfo.BgmFilePath" );
		//OnPropertyChanged( "MusicInfo.BgmFilePath.AbsoulteFilePath" );
	}
}