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;
    }
}

したがって、1 つのウィンドウに対して 1 つのユーザー コントロールを使用すると、次のようになります。

<Window>
    <Grid>
        <local:LicenseInfoControl x:Name="LicenseInfoControl"/>
    </Grid>
</Window>

それはうまくいきます。しかし、私がそれらのうちの2つを使用する場合:

<Window>
    <Grid>
        <local:LicenseInfoControl x:Name="FileLicenseInfoControl"/>
        <local:LicenseInfoControl x:Name="SamLicenseInfoControl"/>
    </Grid>
</Window>

両方の ListView が空です。私は何を間違っていますか?

4

1 に答える 1

0

バインディングはうまくいきました。問題は、TabControl に TabItem が 1 つある場合、ウィンドウがロードされてデータが公開されたときに選択されることでした。しかし、TabControl に 2 つの TabItem がある場合、どちらも選択されず、バインディングが機能していないように感じます。ただし、タブ項目のいずれかを選択すると、データがすぐに公開されます。したがって、決定は、2 つのユーザー コントロール (私の場合は LicenseInfoControl) を持つウィンドウのコンストラクターで SelectedIndexes に設定されます。

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