「東雲 忠太郎」の平凡な日常のできごと

「東雲 忠太郎」の平凡な日常のできごと

2024.03.18
XML
カテゴリ: C#.NET


C# WPFで画面全体の情報を `DataContext` に渡す方法は、通常、ViewModelというクラスを作成して、それを `DataContext` として設定することです。このViewModelは、画面全体の情報を保持し、ビュー(XAMLファイル)とバインディングされたプロパティやコマンドを提供します。


以下は、簡単な例です。


まず、ViewModelクラスを作成します。


```csharp

using System.ComponentModel;


namespace YourNamespace

{

    public class MainViewModel : INotifyPropertyChanged

    {

        private string _userName;

        public string UserName

        {

            get { return _userName; }

            set

            {

                if (_userName != value)

                {

                    _userName = value;

                    OnPropertyChanged(nameof(UserName));

                }

            }

        }


        // 他のプロパティやコマンドをここに追加


        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged(string propertyName)

        {

            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));

        }

    }

}

```


次に、MainWindow.xaml.csでこのViewModelを作成し、DataContextとして設定します。


```csharp

using System.Windows;


namespace YourNamespace

{

    public partial class MainWindow : Window

    {

        public MainWindow()

        {

            InitializeComponent();

            DataContext = new MainViewModel();

        }

    }

}

```


最後に、MainWindow.xamlファイルで、このViewModelとバインディングしたコントロールを配置します。


```xml

<Window x:Class="YourNamespace.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="MainWindow" Height="450" Width="800">

    <Grid>

        <TextBox Text="{Binding UserName, UpdateSourceTrigger=PropertyChanged}" />

        <!-- 他のコントロールをここに追加 -->

    </Grid>

</Window>

```


これで、画面全体の情報をViewModelのプロパティとして表現し、それをView(XAML)とバインディングすることができます。この方法を使用すると、MVVM(Model-View-ViewModel)パターンを遵守し、WPFアプリケーションをより効果的に構築できます。






お気に入りの記事を「いいね!」で応援しよう

Last updated  2024.03.18 07:35:44


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

© Rakuten Group, Inc.
Create a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: