0

我在下面给出了带有两个单选按钮的 UserControl A。这个 UserControl 视图有它的 ViewModel。

问题: 我再次有两个视图创建和编辑。我想在创建/编辑中使用上面提到的用户控件,并要求我可以根据创建/编辑视图中的要求使单选按钮或用户控件中的任何元素可见或隐藏。

例如:创建可能不需要单选按钮 1 和 2。因此必须只显示矩形。 无论我在列表或文本框中输入什么,都必须在 UserControl 的 ViewModel 中更新,并且单击按钮后的搜索结果必须相应地发送到创建/编辑。注意:创建/编辑有自己的视图模型。请建议哪种方法最适合考虑 MVVM

控件必须放置在灰色区域中,如创建/编辑视图的矩形所示

搜索控制

创建,编辑

4

2 回答 2

0

UserControl由一些抽象驱动可能是一个好主意BaseViewModel。然后创建两个子类EditViewModelCreateViewModel然后根据上下文使用它们。

单选按钮的快速粗略示例:

public abstract class BaseViewModel
{
  public bool ShowRadioButtons { get; protected set; }
}

public class EditViewModel : BaseViewModel
{
  public EditViewModel()
  {
    ShowRadioButtons = true;
  }
}

public class CreateViewModel : BaseViewModel
{
  public CreateViewModel()
  {
    ShowRadioButtons = false;
  }
}
于 2013-10-05T12:09:41.937 回答
0

您可以在 UserControl 中创建 DependancyProperty,例如

public static readonly DependencyProperty RadioButtonVisibilityProperty= 
 DependencyProperty.Register( "RadioButtonVisibility", typeof(Visibility),
 typeof(MyUserControl));


public Visibility RadioButtonVisibility 
{
    get { return (Visibility)GetValue(RadioButtonVisibilityProperty); }
    set { SetValue(RadioButtonVisibilityProperty, value); }
}

并在您的 UserControl 的 xaml 中设置单选按钮的可见性,例如

<RadioButton Visibility="{Binding Parent.RadioButtonVisibility,ElementName=LayoutRoot}"/>

并在您的主视图(创建/编辑)中这样做

<MyUserControl x:Name="Edit" RadioButtonVisibility="Visible"/> 

或者

<MyUserControl x:Name="Create" RadioButtonVisibility="Hidden"/>

并且不要忘记给您的 UserControl 的父 Grid 命名为“LayoutRoot”

喜欢

<Grid x:Name="LayoutRoot"/>
于 2013-10-06T11:01:03.913 回答