1

我有一个这样定义的用户控件:

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 都是空的。我究竟做错了什么?

4

1 回答 1

0

绑定效果很好。问题是,如果 TabControl 有一个 TabItem - 它在加载窗口并且数据暴露在其中时被选中。但是如果 TabControl 有两个 TabItems - 没有一个被选中,并且感觉绑定不起作用。但是,如果您选择选项卡项之一 - 数据会立即公开。所以决定是在具有两个用户控件的窗口构造函数中设置 SelectedIndexes (在我的例子中是 LicenseInfoControl):

FileLicenseInfoControl.ProductTabControl.SelectedIndex = 0;
SamLicenseInfoControl.ProductTabControl.SelectedIndex = 0;
于 2012-12-03T09:20:43.417 回答