나는 WPF 뷰 모델WPF 텍스트 상자는 뷰 모델
class MainWindowViewModel : INotifyPropertyChanged
{
private string _sql;
public string Sql
{
get { return _sql; }
set
{
if (value == _sql) return;
OnPropertyChanged("Sql");
_sql = value;
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
가 나는 또한
private MainWindowViewModel ViewModel
{
get { return Resources["viewModel"] as MainWindowViewModel; }
}
뒤에 텍스트 상자에
<Window.Resources>
<HbmSchemaExporter:MainWindowViewModel x:Key="viewModel"/>
</Window.Resources>
....
<TextBox Grid.Row="6" Grid.Column="0" Grid.ColumnSpan="2" Text="{Binding Source={StaticResource ResourceKey=viewModel}, Path=Sql,Mode=OneWay}"/>
코드를 XAML 뷰를 가지고 있습니다
문제는 코드에서 내가 할 때 viewModel.Sql = SOMETHING
텍스트 상자가 업데이트되지 않습니다. 디버거는 속성에 올바른 값을 표시하지만 텍스트 상자는 비어 있습니다.
또한 바인딩을 TwoWay
으로 변경하려고 시도했으나 실제로는 원하지 않는 텍스트 상자에 입력 한 값으로 속성을 덮어 쓸 수 있습니다. 실제로는 읽기 전용으로 만들 필요가 있습니다. 하지만 현재 범위를 벗어났습니다).
프로그래밍 방식으로 속성을 업데이트 한 후 텍스트 상자를 업데이트하려면 어떻게해야합니까?
응용 프로그램은 기본적으로 NHibernate DDL 생성기입니다. this을 읽은 후에 쓰고 있습니다. "Generate SQL"버튼을 눌러 DB로 실행하는 코드를 표시해야합니다.
OP 댓글 : 일단 앱을 잘 작동하게 만들었고 하나의 어셈블리만으로는 오픈 소스가 될 수 없었습니다. –