【发布时间】:2012-11-26 14:08:15
【问题描述】:
我有一个这样定义的用户控件:
XAML:
<UserControl>
<Grid x:Name="LayoutRoot">
<TabControl x:Name="TabControl" ItemsSource="{Binding Products}" >
<TabControl.ContentTemplate>
<DataTemplate>
<Grid>
<ListView ItemsSource="{Binding Features}" Name="FeaturesListView">
<ListView.View>
<GridView>
<GridViewColumn x:Name="FeatureHeader" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn x:Name="CounterHeader" DisplayMemberBinding="{Binding Counter}" />
<GridViewColumn x:Name="ExpireDateHeader" DisplayMemberBinding="{Binding ExpireDate}" />
</GridView>
</ListView.View>
</ListView>
</Grid>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
</Grid>
后面的代码:
public partial class LicenseInfoControl : UserControl
{
public LicenseInfoControl(ShowableLicense license)
{
InitializeComponent();
DataContext = license;
}
}
所以,如果我对一个窗口使用一个用户控件:
<Window>
<Grid>
<local:LicenseInfoControl x:Name="LicenseInfoControl"/>
</Grid>
</Window>
效果很好。但如果我使用其中两个:
<Window>
<Grid>
<local:LicenseInfoControl x:Name="FileLicenseInfoControl"/>
<local:LicenseInfoControl x:Name="SamLicenseInfoControl"/>
</Grid>
</Window>
两个 ListView 都是空的。我做错了什么?
【问题讨论】:
-
您在问题标题中提到的绑定错误是什么?
-
@Rachel 如果我使用 2 个用户控件,则两个 ListView 都是空的。其他绑定在这两种情况下都能正常工作。
-
如果从代码隐藏中设置每个 LicenseInfoControl 的 DataContext 会发生什么?
-
我已经这样做了(我只是没有足够的空间;))
InitializeComponent(); FileLicenseInfoControl.Initilize(fileLic); SamLicenseInfoControl.Initilize(samLic);
标签: wpf data-binding user-controls