使用MVVM Light重用视图

时间:2013-12-31 12:30:26

标签: c# mvvm windows-phone-8 views mvvm-light

我的解决方案分为不同的项目。

我想重用存储在其他项目引用的公共项目中的视图。 所以,我们假设我有一个自定义视图,它是一个自定义按钮:

    <Button BorderThickness="0" Padding="0" Margin="0,0,0,0" Style="{StaticResource    CommonButtonStyle}" VerticalAlignment="Bottom" HorizontalAlignment="Center">
        <Button.Content>
            <Grid Margin="0,0,0,0">
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <TextBlock HorizontalAlignment="Center" Grid.Row="0" x:Name="Title" Style="{StaticResource CommonButtonTitleStyle}" Margin="0" />
                <TextBlock Margin="0,0,0,0" HorizontalAlignment="Center" x:Name="SubTitle" Grid.Row="1" Style="{StaticResource CommonButtonSubTitleStyle}" />
            </Grid>
        </Button.Content>
    </Button>

我应该为每个视图创建一个ViewModel(我必须为特定视图创建属性和命令),以便使用我的自定义按钮填充StackPanel吗?

更新:

我最终创建了一个包含我的按钮的UserControl,其中设置了TextBlock的文本和按钮命令。 然后我创建了一个带有属性和RelayCommand所需的抽象视图模型。

创建了View模型,扩展了我的抽象视图模型,为我需要的每个按钮为我的RelayCommand实现不同的操作。

感谢您的反馈。

1 个答案:

答案 0 :(得分:2)

如果您想制作可重复使用的控件,最佳解决方案是创建一个新的UserControl。

此处的示例应足以让您入门。

http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj714088(v=vs.105).aspx

如果你想用你的Button填充你的StackPanel,你只需要导入CustomUserControl的命名空间,并像任何其他控件一样将它添加到XAML。