Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 在不同视图中访问一个Usercontrol_Wpf_Mvvm_User Controls_Wpf Controls_Prism - Fatal编程技术网

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

Wpf 在不同视图中访问一个Usercontrol,wpf,mvvm,user-controls,wpf-controls,prism,Wpf,Mvvm,User Controls,Wpf Controls,Prism,在不同视图中访问一个用户控件 这里,第一个带有单选按钮和其他元素的矩形应该是通用用户控件 下面带有灰色区域的框是其他视图。灰色区域必须显示UserControl。如箭头所示,仅显示这些字段。灰色区域将根据视图的不同而有所不同。开发人员基本上需要这些通用控件,而不是在所有位置重复此操作。有人可以建议使用哪种方法吗 在这里,灰框视图有自己的viewmodel…如果您询问如何在UI中的不同位置显示同一用户控件的不同元素,则usercontrol单独作为其viewmodel,然后,您可以在UserCo

在不同视图中访问一个用户控件

这里,第一个带有单选按钮和其他元素的矩形应该是通用用户控件

下面带有灰色区域的框是其他视图。灰色区域必须显示UserControl。如箭头所示,仅显示这些字段。灰色区域将根据视图的不同而有所不同。开发人员基本上需要这些通用控件,而不是在所有位置重复此操作。有人可以建议使用哪种方法吗


在这里,灰框视图有自己的viewmodel…如果您询问如何在UI中的不同位置显示同一
用户控件的不同元素,则usercontrol单独作为其viewmodel,然后,您可以在
UserControl
Bind
上定义元素的
Visibility
属性,然后在外部设置它们:

用户控件的代码隐藏中

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); }
}
然后在XAML中:

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的视图在每个视图上定义一个嵌套区域?
<YourControlNamespace:YourUserControl AreButtonsVisible="False" ... />