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

本文关键字:同一个 两次 绑定 数据 ViewModel View 应用 | 更新日期: 2023-09-27 18:01:53

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

<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属性,所以我可以告诉这个视图应该显示哪些数据。我可以为此使用多绑定吗?

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

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