参考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; }
提前感谢您的帮助:)