我试图以此为基础,而不是简单地使用列表框中的文本,我希望能够插入一个显示模型的 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; }
提前感谢您的帮助:)