我在上面评论了你如何使用
DependencyProperty
把它设置成那种类型等等。这都是好的,但可能是你需要的杀伤力过大。只需使用
x:FieldModifier="public"
得到你想要的。
下面是一个例子:
我做了3个用户控件
MainWindow
是的。用户控件是
MainControl
,
SubControlA
我是说,
SubControlB
是的。
在
主控
我首先给控件起一个逻辑名称,然后
FieldModifier
对公众。
<UserControl x:Class="Question_Answer_WPF_App.MainControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Question_Answer_WPF_App"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<StackPanel>
<local:SubControlA x:Name="SubControlA" x:FieldModifier="public"/>
<local:SubControlB x:Name="SubControlB" x:FieldModifier="public"/>
</StackPanel>
</UserControl>
然后我把它放在
主控
在我的
主窗口
像这样使用它:
<Window x:Class="Question_Answer_WPF_App.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Question_Answer_WPF_App"
mc:Ignorable="d"
Title="MainWindow"
Height="450"
Width="800">
<Grid>
<local:MainControl>
<local:SubControlA>
<TextBlock Text="I'm in SubControlA" />
</local:SubControlA>
</local:MainControl>
</Grid>
</Window>
希望这有帮助。你也可以参考
关联属性
这些控件中的
Visibility
等等(或者你在问题中使用的任何东西)。
这只是一个例子,我不建议这么便宜。
好的,下面我来解释一下你的评论/问题的答案,让我再深入一点。首先,
分角色
和
分角色
只有两个空的
UserControls
我做了这个例子。
在
xaml
方括号之间的任何内容都将在此时初始化。我们使用名称空间/类型名作为属性的目标,括号之间的任何内容都指向该属性的setter。
想想这个
主窗口
…我所做的就是定个规矩
UserControl
里面看起来像这样
Xaml公司
<Window x:Class="Question_Answer_WPF_App.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Question_Answer_WPF_App"
mc:Ignorable="d"
Title="MainWindow"
Height="450"
Width="800">
<local:ExampleControl />
</Window>
跑步的时候看起来是这样的
现在来看看习俗
ExampleControl
因为到目前为止没什么大不了的。
<UserControl x:Class="Question_Answer_WPF_App.ExampleControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:System="clr-namespace:System;assembly=mscorlib"
xmlns:Media="clr-namespace:System.Windows.Media;assembly=PresentationCore"
xmlns:Windows="clr-namespace:System.Windows;assembly=PresentationCore"
mc:Ignorable="d"
d:DesignHeight="450"
d:DesignWidth="800">
<StackPanel>
<Button Visibility="Visible"
Height="50"
Background="Blue"
Content="Button A"/>
<Button>
<Button.Visibility>
<Windows:Visibility> Visible </Windows:Visibility>
</Button.Visibility>
<Button.Height>
<System:Double> 50 </System:Double>
</Button.Height>
<Button.Background>
<Media:SolidColorBrush>
<Media:SolidColorBrush.Color>
<Media:Color>
<Media:Color.R> 0 </Media:Color.R>
<Media:Color.G> 0 </Media:Color.G>
<Media:Color.B> 255 </Media:Color.B>
<Media:Color.A> 255 </Media:Color.A>
</Media:Color>
</Media:SolidColorBrush.Color>
</Media:SolidColorBrush>
</Button.Background>
<Button.Content> Button B </Button.Content>
</Button>
</StackPanel>
</UserControl>
在这个
示例控件
我有两个相同的按钮,除了一个说
按钮A
另一个
按钮B
是的。
还要注意,我必须包括对某些类型的命名空间的引用,例如:
xmlns:System="clr-namespace:System;assembly=mscorlib"
xmlns:Media="clr-namespace:System.Windows.Media;assembly=PresentationCore"
xmlns:Windows="clr-namespace:System.Windows;assembly=PresentationCore"
XAML
还要注意
Background
作为一个
Brush
类型可以是派生自
刷子
是的。在这个例子中,我使用
SolidColorBrush
它的基础是
刷子
.
但是,我也在
背景
是的。注意,我不仅分配
单色画刷
但我指定
Color
财产
单色画刷
也。
花点时间了解
Xaml公司
正在分析和使用这些特性,我相信它将回答您关于我如何引用的问题
分角色
和
分角色
从我的
主控
在这个答案的开头。