0

在不同的视图中访问一个用户控件
在此处输入图像描述

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

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

这里的灰色框视图有自己的视图模型......并且单独的用户控件作为它的视图模型

4

1 回答 1

0

如果您询问如何UserControl在 UI 的不同位置显示相同的不同元素,那么您可以在元素的bool属性上定义一些属性,UserControl然后在外部设置它们:BindVisibility

在您背后的代码中UserControl

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,你可以隐藏Buttons:

<YourControlNamespace:YourUserControl AreButtonsVisible="False" ... />
于 2013-10-06T15:08:26.020 回答