【发布时间】: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