MVVM을 사용하는 WPF 응용 프로그램이 있는데, 다음과 같은 Ap.XAML이 있습니다.app.xaml에 정의 된 ObjectDataProvider 리소스에 TextBlock을 바인딩하려면 어떻게해야합니까?
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Assets/StyleDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
<ObjectDataProvider x:Key="SAG_POK" ObjectType="{x:Type or:SAG_POK}" />
</ResourceDictionary>
</Application.Resources>
자, MainWindow.XAML에 나는 Ap.xaml의 SAG_POK ObjectDataprovider에 바인딩합니다.
<StackPanel
DataContext="{Binding Source={StaticResource SAG_POK}}">
<TextBlock Name="ValgtSag" Text="{Binding ToStringProperty}"/>
</StackPanel>
내 문제는 내 viewmodels 중 하나에, 내가 SAG_POK의 인스턴스와 App.xaml에서 SAG_POK ObjectDataProvider의 인스턴스이다.
App.Current.Resources["SAG_POK"] = SagSelecteditem;
하지만 내 OnNotifyPropertyChanged ("SAG_POK") 나는 다른 시나리오를 시도했지만 그들 중 누구도 작동하는 것 같다하지를 넣어 위치를 알아낼 수 없습니다.
이전에 사용해 보신 분 누구든지 사전에 감사의 말을 알려주십시오. 당신은을 사용하는 이유는 무엇입니까 :
하는 데 도움이 이미 ViewModels을 가지고있을 때 ObjetcDataProvider? 뷰를 ViewModel에 직접 바인드하지 않는 이유는 무엇입니까? – SvenG
Objectdataprovider는 응용 프로그램의 여러 위치에서 사용되고 viewmodel은 창이 아닌 페이지에서 사용되기 때문에. – ThomasE
그런 자원을 "설정"하지 마십시오. 참조 될 때 인스턴스화되고 매 인스턴스가 매번 재사용됩니다. ODP를 사용하려는 방식은 기이합니다. 왜 SAG_POK 인스턴스를 리소스로 추가하지 않습니까? ODP를 다음과 같이 바꿉니다 :' ' –
Will