2013-10-05 31 views
0

我有UserControl A,下面給出了兩個單選按鈕。 此UserControl視圖具有其ViewModel。製作可以被其他視圖訪問的通用用戶控件

問題: 我再次有兩個視圖創建和編輯。 我想在創建/編輯中使用上面提到的用戶控件,要求我可以根據創建/編輯視圖中的要求將單選按鈕或用戶控件中的任何元素設置爲可見或隱藏。

例如:Create可能不需要單選按鈕1和2.因此只能顯示Rectangle。 無論我在列表或文本框中給出的輸入都必須在UserControl的ViewModel中更新,並且點擊按鈕後的搜索結果必須相應地發送到創建/編輯。 注:創建/編輯有自己的ViewModels.Please表明哪種方法最好考慮MVVM

控制已被放置在灰掉的區域,如圖矩形的創建/編輯視圖

Search Control

Create,Edit

回答

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

感謝您的信息...添加到上面的問題..我希望上述控制被應用程序中的視圖使用,而不重複使用代碼..這個控件將被用作ag通用一個 – user1965995

0

您可以在用戶控件中創建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); } 
} 

和您的用戶控件的XAML中設置單選按鈕的知名度就像

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

並在你的主視圖(創建/編輯)做這樣的

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

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

不要忘記給你的用戶控件的父網名 「LayoutRoot」

<Grid x:Name="LayoutRoot"/> 
相關問題