One View / ViewModel在同一个应用程序中使用了两次,但绑定到不同的数据

时间:2011-07-13 14:30:11

标签: c# mvvm

我创建了一个视图和视图模型,我想在同一个应用程序中使用两次(或更多)。但是我希望将它绑定到两个不同的模型。

<TabItem Background="Transparent">
            <TabItem.Header>
                <TextBlock Text="Items" Foreground="LightSeaGreen" FontSize="14"/>
            </TabItem.Header>
            <AdornerDecorator>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="250" />
                    </Grid.ColumnDefinitions>

                    <local:ItemsView Grid.Row="0" Grid.Column="0" Margin="5" Height="Auto"/>
                    //This is the reused control
                    <local:NutritionLabelView Grid.Row="0" Grid.Column="1" Margin="5,15,5,5" Height="Auto" VerticalAlignment="Top" ViewKey="Key_ItemsView" />

                </Grid>
            </AdornerDecorator>
        </TabItem>

        <TabItem Background="Transparent">
            <TabItem.Header>
                <TextBlock Text="Meals" Foreground="LightSeaGreen" FontSize="14"/>
            </TabItem.Header>
            <AdornerDecorator>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="250" />
                    </Grid.ColumnDefinitions>

                    <local:MealsView Grid.Column="0" Margin="5" Height="Auto"/>
                     //This is it again
                    <local:NutritionLabelView Grid.Column="1" Margin="5,15,5,5" Height="Auto" VerticalAlignment="Top" ViewKey="Key_MealsView" />

                </Grid>
            </AdornerDecorator>

        </TabItem>

重用的控件是<local:NutritionLabelView Grid.Column="1" Margin="5,15,5,5" Height="Auto" VerticalAlignment="Top" ViewKey="Key_MealsView" />我给了一个ViewKey属性,所以我可以告诉这个视图应该显示哪些数据。我可以使用多重绑定吗?

1 个答案:

答案 0 :(得分:0)

我通过将每个视图的控件绑定到viewmodel中的相同属性并将其作为Object类型的属性来解决这个问题。然后根据视图键返回正确类型的对象。适合我。