1

参考上一个带有 MVVM 答案的问题

我试图以此为基础,而不是简单地使用列表框中的文本,我希望能够插入一个显示模型的 3 个不同属性的 UserControl(或者我需要另一个 ViewModel 吗?)。

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

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

用户控制代码

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

    public ActionModule()
    {
        InitializeComponent();
    }

}

用户控制界面

<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; }

提前感谢您的帮助:)

4

0 回答 0