【WPF 각서】양방향 데이터 바인딩
소개
마지막 기사 에서 다음과 같이 마무리했지만, 자동적으로 반영되도록 하려면 좀 더 수정이 필요했습니다.
MainViewModel.BindText를 동적으로 변경하면 그에 따라 Label의 Content 속성에도 자동으로 반영됩니다.
XAML
먼저 사용자의 입력 값을 ViewModel에 반영하고 싶으므로 TextBox를 추가합니다.
또한 XAML(UI)의 값이 바인드한 ViewModel에 반영되도록 바인드의 파라미터를 추가합니다.
MainView.xaml<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBox x:Name="textBox" Margin="0,0,0,0" TextWrapping="Wrap" Text="{Binding BindText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" AcceptsTab="True" AcceptsReturn="True"/>
<Label Content="{Binding BindText, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,0" Grid.Row="1"/>
</Grid>
ViewModel
ViewModel 쪽도 값의 변경을 XAML에 전해 줄 필요가 있습니다.
MainViewModel.csusing System.ComponentModel;
:
class MainViewModel : INotifyPropertyChanged
{
private string _bindText = "てきとうな初期値";
public String BindText
{
get
{
return this._bindText;
}
set
{
this._bindText = value;
this.OnPropertyChanged(nameof(BindText));
return;
}
}
public event PropertyChangedEventHandler PropertyChanged = null;
protected void OnPropertyChanged(string info)
{
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(info));
}
}
완성
이제 TextBox 변경이 바로 Label에 반영됩니다.
이번 ViewModel에서 추가한 부분은 BaseViewModel 같은 클래스로 분리해 두면, ViewModel이 복수가 되어도 대응하는 것이 간단해진다고 생각합니다.
Reference
이 문제에 관하여(【WPF 각서】양방향 데이터 바인딩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/TAK_EMI/items/d7991a34f815d9d73e32
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
먼저 사용자의 입력 값을 ViewModel에 반영하고 싶으므로 TextBox를 추가합니다.
또한 XAML(UI)의 값이 바인드한 ViewModel에 반영되도록 바인드의 파라미터를 추가합니다.
MainView.xaml
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBox x:Name="textBox" Margin="0,0,0,0" TextWrapping="Wrap" Text="{Binding BindText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" AcceptsTab="True" AcceptsReturn="True"/>
<Label Content="{Binding BindText, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,0" Grid.Row="1"/>
</Grid>
ViewModel
ViewModel 쪽도 값의 변경을 XAML에 전해 줄 필요가 있습니다.
MainViewModel.csusing System.ComponentModel;
:
class MainViewModel : INotifyPropertyChanged
{
private string _bindText = "てきとうな初期値";
public String BindText
{
get
{
return this._bindText;
}
set
{
this._bindText = value;
this.OnPropertyChanged(nameof(BindText));
return;
}
}
public event PropertyChangedEventHandler PropertyChanged = null;
protected void OnPropertyChanged(string info)
{
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(info));
}
}
완성
이제 TextBox 변경이 바로 Label에 반영됩니다.
이번 ViewModel에서 추가한 부분은 BaseViewModel 같은 클래스로 분리해 두면, ViewModel이 복수가 되어도 대응하는 것이 간단해진다고 생각합니다.
Reference
이 문제에 관하여(【WPF 각서】양방향 데이터 바인딩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/TAK_EMI/items/d7991a34f815d9d73e32
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
using System.ComponentModel;
:
class MainViewModel : INotifyPropertyChanged
{
private string _bindText = "てきとうな初期値";
public String BindText
{
get
{
return this._bindText;
}
set
{
this._bindText = value;
this.OnPropertyChanged(nameof(BindText));
return;
}
}
public event PropertyChangedEventHandler PropertyChanged = null;
protected void OnPropertyChanged(string info)
{
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(info));
}
}
이제 TextBox 변경이 바로 Label에 반영됩니다.
이번 ViewModel에서 추가한 부분은 BaseViewModel 같은 클래스로 분리해 두면, ViewModel이 복수가 되어도 대응하는 것이 간단해진다고 생각합니다.
Reference
이 문제에 관하여(【WPF 각서】양방향 데이터 바인딩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/TAK_EMI/items/d7991a34f815d9d73e32텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)