在不同的视图中访问一个Usercontrol

时间:2013-10-06 12:18:08

标签: wpf mvvm user-controls wpf-controls prism

以不同的视图访问一个Usercontrol
 enter image description here

这里第一个带有radiobuttons和其他元素的矩形应该是通用的用户控件。

以下具有灰色区域的框是其他视图。灰色区域必须显示UserControl。如箭头所示,仅显示那些字段。灰色区域将根据视图而变化。基本上开发人员需要这些通用控件在所有地方重复这一点。可以建议某种方式去做。

这里灰色框视图有自己的视图模型...而userdtrol单独作为其视图模型

1 个答案:

答案 0 :(得分:0)

如果您询问如何在用户界面中的不同位置显示相同UserControl的不同元素,那么您可以在bool和{{1}上定义一些UserControl属性}元素的Bind属性,然后在外部设置它们:

Visibility

的代码中
UserControl

然后在XAML中:

public static readonly DependencyProperty AreButtonsVisibleProperty = 
    DependencyProperty.Register("AreButtonsVisible", typeof(bool), 
    typeof(YourUserControlName), new UIPropertyMetadata(false));

public bool AreButtonsVisible 
{
    get { return (bool)GetValue(AreButtonsVisibleProperty); }
    set { SetValue(AreButtonsVisibleProperty, value); }
}

然后,在您使用xmlns:Converters="clr-namespace:ApplictaionName.Converters" xmlns:YourControlNamespace="clr-namespace:ApplictaionName.YourControlNamespace" ... <UserControl.Resources> <Converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" /> </UserControl.Resources> ... <Button Content="->" Visibility="{Binding AreButtonsVisible, RelativeSource={ RelativeSource AncestorType={x:Type YourControlNamespace:YourUserControl}}, Converter={StaticResource BooleanToVisibilityConverter}}" /> <Button Content="X" Visibility="{Binding AreButtonsVisible, RelativeSource={ RelativeSource AncestorType={x:Type YourControlNamespace:YourUserControl}}, Converter={StaticResource BooleanToVisibilityConverter}}" /> 的位置,您可以隐藏UserControl s:

Button