2013-10-04 2 views
1

У меня есть UserControl с двумя RadioButtons и текстовым полем и есть соответствующий ViewModel для этого представления. Мой вопрос заключается в том, может ли этот элемент управления быть размещен на какой-либо другой странице и свойствах, т. Е. Radiobuttons должен быть отключен в нескольких представлениях и включен в некоторых других Как я могу разоблачить эти свойства или установить их из другой страницы. Я хочу, чтобы UserControl был провайдером Посмотреть на других страницахЗадайте свойства UserControl через другой View или ViewModel

+0

DependencyProperty может быть полезной. – Vishal

ответ

1

Вы можете создать bool DependencyPropertiy для каждого вида:

public static readonly DependencyProperty IsRadioButtonEnabledProperty = 
    DependencyProperty.Register("IsRadioButtonEnabled", typeof(bool), 
    typeof(MainWindow), new UIPropertyMetadata(true)); 

public bool IsRadioButtonEnabled 
{ 
    get { return (bool)GetValue(IsRadioButtonEnabledProperty); } 
    set { SetValue(IsRadioButtonEnabledProperty, value); } 
} 

И использовать его внутри UserControl, как это:

<RadioButton IsEnabled="{Binding IsRadioButtonEnabled, RelativeSource={ 
    RelativeSource FindAncestor, 
    AncestorType={x:Type Views:YourUserControl}}}" ... /> 

Затем вы можете связать с этим bool собственности из-за пределов UserControl и установить, включены ли элементы управления или нет:

<YourUserControl IsRadioButtonEnabled={Binding IsRadioButtonEnabled} ... /> 

Затем в модели представления:

public bool IsRadioButtonEnabled { get; set; } 

Затем отключить контроль :

IsRadioButtonEnabled = false; 
Смежные вопросы