在数据库中,我有3个连续表患者(1)< - (n)研究(1)< - (n)卡。
我的结构如下:
// app.xaml
<Application.Resources>
<AppName:appnameDataSetApp x:Key="appnameDataSetApp"/>
</Application.Resources>
// main.xaml
<Window.Resources>
<CollectionViewSource x:Key="patientVS"
Source="{Binding patient, Source={StaticResource appnameDataSetApp}}"/>
<CollectionViewSource x:Key="studyVS"
Source="{Binding FK_study_patient, Source={StaticResource patientVS}}"/>
<CollectionViewSource x:Key="cardVS"
Source="{Binding FK_card_study, Source={StaticResource studyVS}}"/>
</Window.Resources>
当我从Visual Studio中的“数据源”窗口拖放字段时创建它。
现在我想创建一个新的用户控件(或窗口),其中包含从main连接到patientVS
的CollectionViewSource。
在那个CollectionViewSource中,我将选择特定的研究,用户控制中的其他组件将使用它。
我想它一定是这样的:
// study.xaml
<Window.Resources>
<CollectionViewSource x:Key="studyVS_ano"
Source="{Binding FK_study_patient, Source={StaticResource
?HOW_FROM_PARENT_patientVS?}}"/>
<CollectionViewSource x:Key="cardVS_ano"
Source="{Binding FK_card_study, Source={StaticResource studyVS_ano}}"/>
</Window.Resources>
...
<ComboBox x:Name="cbxStudy" ItemsSource="{Binding Source={StaticResource studyVS_ano}}"
<ComboBox x:Name="cbxCard" ItemsSource="{Binding Source={StaticResource cardVS_ano}}"
但我不知道如何创建与父窗口的连接。
我试试这个:
// study.xaml
<Window.Resources>
<CollectionViewSource x:Key="studyVS_ano"/>
<CollectionViewSource x:Key="cardVS_ano"
Source="{Binding FK_card_study, Source={StaticResource studyVS_ano}}"/>
</Window.Resources>
...
和初始化方法:
public void Initialize()
{
CollectionViewSource patientVS = (CollectionViewSource)parent.FindResource("patientVS");
CollectionViewSource studyVS_ano = (CollectionViewSource)FindResource("studyVS_ano");
// not working
studyVS_ano.Source = patientVS;
// not working
studyVS_ano.Source = patientVS.View;
// not working (I know it does not make sense)
studyVS_ano.Source = "{Binding FK_study_patient, Source={StaticResource patientVS}}"
}
但是当我使用Source
形式父学习VS:
public void Initialize()
{
CollectionViewSource studyVS = (CollectionViewSource)parent.FindResource("studyVS");
CollectionViewSource studyVS_ano = (CollectionViewSource)FindResource("studyVS_ano");
// working !
studyVS_ano.Source = studyVS.Source;
}
这有效但不完全,因为当我在patientVS
视图中更改当前患者时,studyVS
会正确更改,但studyVS_ano
不会更改。
我想创建多个 study.xaml 控件。
如何创建绑定或连接两个CollectionViewSource对象的东西?