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

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

2024.08.03
XML
カテゴリ: WPFC#.NET


`TargetNullValue`はWPFのデータバインディング機能の一部で、バインディングソースがnullの場合に使用する値を指定するために使用されます。これにより、バインディングソースがnullである場合でも、UI要素に表示されるデフォルトの値を設定できます。


以下に、`TargetNullValue`の使用方法を説明します。




1. **ViewModelクラスの作成**:

   バインディングソースとなるプロパティを含むViewModelクラスを作成します。この例では、`DataValue`プロパティがnullの場合に使用するデフォルト値を指定します。


```csharp

// ViewModels/MainViewModel.cs

using System.ComponentModel;

using System.Runtime.CompilerServices;


namespace WpfApp.ViewModels

{

    public class MainViewModel : INotifyPropertyChanged

    {

        private string _dataValue;


        public string DataValue

        {

            get => _dataValue;

            set

            {

                _dataValue = value;

                OnPropertyChanged();

            }

        }


        public event PropertyChangedEventHandler PropertyChanged;


        protected void OnPropertyChanged([CallerMemberName] string name = null)

        {

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

        }

    }

}

```


2. **View(XAMLファイル)の作成**:

   `TextBox`コントロールの`Text`プロパティにデータバインディングを設定し、`TargetNullValue`を使用します。


```xml

<!-- Views/MainWindow.xaml -->

<Window x:Class="WpfApp.Views.MainWindow"

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

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

        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

        xmlns:vm="clr-namespace:WpfApp.ViewModels"

        mc:Ignorable="d"

        Title="MainWindow" Height="200" Width="400">

    <Window.DataContext>

        <vm:MainViewModel />

    </Window.DataContext>

    <Grid>

        <TextBox Text="{Binding DataValue, TargetNullValue='デフォルト値', UpdateSourceTrigger=PropertyChanged}" 

                 HorizontalAlignment="Left" Height="23" Margin="10,10,0,0" 

                 VerticalAlignment="Top" Width="360"/>

    </Grid>

</Window>

```


### 実行結果


- `DataValue`がnullの場合、テキストボックスには「デフォルト値」が表示されます。

- `DataValue`がnullでない場合、その値が表示されます。


### 例を拡張する


`MainWindow.xaml.cs`で`DataValue`をnullに設定してみます。


```csharp

// Views/MainWindow.xaml.cs

using System.Windows;

using WpfApp.ViewModels;


namespace WpfApp.Views

{

    public partial class MainWindow : Window

    {

        public MainWindow()

        {

            InitializeComponent();


            // ViewModelのDataValueをnullに設定

            var viewModel = (MainViewModel)DataContext;

            viewModel.DataValue = null;

        }

    }

}

```


これで、アプリケーションを実行すると、`TextBox`には「デフォルト値」が表示されるはずです。


この方法を応用して、UIの他の部分でもバインディングソースがnullの場合のデフォルト値を設定することができます。例えば、`ListBox`や`ComboBox`のアイテムソースがnullの場合に特定のメッセージを表示するなど、様々なシナリオで活用できます。






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

Last updated  2024.08.03 11:05:26


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

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