당신의 도움이 필요합니다! 다음은 내 주요 XAML보기에 무엇을 기본적으로 :PropertyGrid 용 하이브리드 MVVM 구현 (DevExpress에서)
<Button x:Name="button1" Content= "{Binding Customer1, Mode=TwoWay}" Margin="271,52,103,106" Click="button1_Click" />
주요 XAML (코드 숨김의 코드 숨김, 그것은 100 % 순수 MVVM하고, 오히려 하이브리드 아니다 이후)은 다음과 같습니다 :
public MainWindow()
{
InitializeComponent();
this.DataContext = new MyViewModel();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
DXDialog d = new DXDialog("Information", DialogButtons.OkCancel,true);
d.Content = new PropertyGrid();
d.SizeToContent = System.Windows.SizeToContent.WidthAndHeight;
d.Owner = this;
d.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;
var result = d.ShowDialog();
if (result == true)
{
}
}
볼 수 있듯이 ViewModel 클래스의 String 속성에 바인딩 된 Button이 있습니다. 버튼을 클릭하면 ViewModel 클래스의 Properties로 PropertyGrid가 포함 된 DXDialog가 열립니다. 내가 당신에게 내 의 ViewModel 클래스을 보여 드리죠 아래 : 대화에서
public class MyViewModel : ViewModelBase, INotifyPropertyChanged
{
Customer currentCustomer;
protected string _customer1;
public string Customer1 {
get { return this._customer1; }
set { this.SetProperty(ref this._customer1, value, "Customer1"); }
}
public MyViewModel()
{
//Customers = new ObservableCollection<Customer>();
//Customers.Add(new Customer() { Name = "Name1" });
Customer1 = "ABC";
}
}
내가 속성 값을 편집 할 수있는거야 아직 내가 그 즉시 방식으로 저장할 수 있습니다 방법을 모른다 메인 뷰의 버튼에도 반영됩니다. {경계가있는 모든 곳을 반영합니다.} 나는 실행이
if (result == true)
{
}
뒤에 주요 코드에서 다음 줄에 오는 것을 볼 수 있습니다하지만 편집 된 값을 얻는 방법을 알고 올바른 위치로 연결하지 마십시오.
기본적으로, 필자의 요구 사항은 ViewModel 클래스의 여러 인스턴스에 바인딩 된 여러 컨트롤 (이 경우 버튼)을 누른 다음 버튼을 클릭 할 때 PropertyGrid 내에서 특정 ViewModel 인스턴스를 편집 할 수 있어야합니다. DXDialogue의 "OK"를 클릭 한 후에 변경 사항은 관련 버튼에도 반영되어야합니다. -Ron