通过其他View或ViewModel设置UserControl的属性

时间:2013-10-04 11:02:30

标签: wpf user-controls wpf-controls prism

我有一个带有两个RadioButtons和一个文本框的UserControl,并且具有相应的ViewModel到此视图。 我的问题是可以将此控件放在其他页面和属性中,即Radiobuttons必须在少数视图中禁用,在其他一些页面中启用 如何公开这些属性或从其他页面设置它  我希望UserControl成为其他页面的提供者视图

1 个答案:

答案 0 :(得分: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;