使用列表和多个视图模型属性时的MVVM视图表示

时间:2013-05-22 09:28:46

标签: c# wpf design-patterns mvvm

参考a previous question with an MVVM answer

我正在尝试构建这个,而不是简单地使用列表框中的文本,我希望能够插入一个显示模型的3个不同属性的UserControl(或者我需要另一个ViewModel?)。

我可以轻松地将UserControl直接添加到ListBox中,但我很确定这不会与MVVM模式一致。

只是想知道是否有人可以提供帮助。

UserControl代码

public partial class ActionModule : UserControl
{
    public ActionsViewModel ViewModel { get; set; }

    public ActionModule()
    {
        InitializeComponent();
    }

}

UserControl UI

<UserControl x:Class="DelegateAction.ActionModule"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" >
<DockPanel>
    <DockPanel.Resources>
        <Style TargetType="TextBlock">
            <Setter Property="TextAlignment" Value="Center"/>
            <Setter Property="Height" Value="24" />
            <Setter Property="Padding" Value="3" />
        </Style>
    </DockPanel.Resources>
    <TextBlock DockPanel.Dock="Top" MinWidth="150" Text="Title"/>
    <Button DockPanel.Dock="Bottom" Content="Action" MinWidth="150" />
    <TextBlock DockPanel.Dock="Left" MinWidth="75" Text="Owner"/>
    <TextBlock DockPanel.Dock="Right" MinWidth="75" Text="Score" />
</DockPanel>

UserControl的模型

public class ActionItem
{
    public string Title { get; set; }
    public string Owner { get; set; }
    public short Score { get; set; }
    public Action Action { get; set; }
}

在上一个例子的ViewModel中,我们有这些集合,它们是作为ActionItem的集合保留还是需要是ActionModule的集合?

public class ActionsViewModel : PropertyChangedBase
{
    public ObservableCollection<ActionItem> AvailableActions { get; set; }
    public ObservableCollection<ActionItem> SelectedActions { get; set; }

    public ActionItem FocusedAction1 { get; set; }
    public ActionItem FocusedAction2 { get; set; }

提前感谢您的帮助:)

0 个答案:

没有答案