【问题标题】:Reusing views with MVVM Light使用 MVVM Light 重用视图
【发布时间】:2014-01-18 09:29:22
【问题描述】:

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

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

    <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?

更新:

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

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

感谢您的反馈。

【问题讨论】:

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

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


【解决方案1】:

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

这里的示例应该足以让您入门。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多