tabitem中的用户控件不会更改值

时间:2015-05-07 08:52:49

标签: wpf

我有一个TabContorl,我正在动态添加tabitem。我已将datatemplate绑定到某个viewmodel,并按照datatemplate中的定义加载视图。

<DataTemplate DataType="{x:Type viewmodels:ItemViewModel}">
            <views:CustomerOrderView />
        </DataTemplate>
        <DataTemplate DataType="{x:Type viewmodels:InvoiceGeneratorViewModel}">
            <views:InvoiceGenerator/>
        </DataTemplate>
        <DataTemplate DataType="{x:Type viewmodels:OrderDetailsViewModel}">
            <views:OrderDetailsView/>
        </DataTemplate>

如果我直接在customerorderview中使用控件,那么它可以正常工作。这意味着如果我切换选项卡,所有值都相应地加载但如果我使用另一个usercontrol insite customerview用户控件则无法正常工作。我创建了一次用户控件有一个文本框,按钮和一个弹出控件。当我点击按钮时,弹出窗口打开,即使切换选项卡也会保持不变。如果文本框值更改,则还会更改所有选项卡的值。它看起来一个视图正在服务所有选项卡。我无法理解如何处理它。

以下是我在客户

中使用的用户控件
<UserControl x:Class="OrderManagement.Views.ProductSelectionView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="35"/>

        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition Width="30"/>
        </Grid.ColumnDefinitions>
        <TextBox x:Name="txtProduct" Grid.Row="0" Grid.Column="0"/>
        <Button x:Name="btnSearch" Content="S" Click="OnSearchClick" Grid.Row="0" Grid.Column="1" Margin="5"/>
        <Popup x:Name="popup"  PlacementTarget="{Binding ElementName=btnSearch}" Placement="Bottom"  
               Width="300" Height="300" Margin="5">
            <Border BorderBrush="Black" BorderThickness="2" Background="AliceBlue">
                <Grid >
                    <Grid.RowDefinitions>
                        <RowDefinition/>
                        <RowDefinition Height="35"/>
                    </Grid.RowDefinitions>
                    <DataGrid x:Name="dataGrid" AutoGenerateColumns="False" Grid.Row="0" Grid.ColumnSpan="2"
                              IsReadOnly="False" CanUserAddRows="False" CanUserDeleteRows="False">
                        <DataGrid.Columns>
                            <DataGridCheckBoxColumn Binding="{Binding IsChecked}" IsReadOnly="False"/>
                            <DataGridTextColumn Header="Product Name" Binding="{Binding Name}"/>
                            <DataGridTextColumn Header="Quantity In Stock" Binding="{Binding QuantityInStock}"/>
                        </DataGrid.Columns>
                    </DataGrid>
                    <WrapPanel Grid.Row="1" Grid.ColumnSpan="2" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Right">
                        <Button Content="OK" Click="OnOKClick" Width="80"/>
                        <Button Content="Cancel" Click="OnCancelClick" Width="80" Margin="20,0,0,0"/>
                    </WrapPanel>
                </Grid>
            </Border>
        </Popup>

    </Grid>
</UserControl>

Tabcontrol根据其datacontext虚拟化数据,但productselection控件中的弹出和文本值对于所有选项卡保持不变。打开弹出窗口,但它仍然适用于所有选项卡。

让我知道如何做到这一点或我正在做的错误

0 个答案:

没有答案