C# 使用MVVM Light重用视图

C# 使用MVVM Light重用视图,c#,mvvm,windows-phone-8,views,mvvm-light,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 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

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


感谢您的反馈。

如果您想创建可重用的控件,最好的解决方案是创建一个新的UserControl

这里的示例应该足以让您开始学习


如果您想用按钮填充StackPanel,只需导入CustomUserControl的名称空间,并像其他控件一样将其添加到XAML。

如果您的按钮每次都能完成这项工作,则可以使用相同的viewmodel。对于按钮中的内容,可以关联un模型。{Binding Model.Name}{Binding Model.LastName}所以用viewmodel创建一个用户控件会很好。