我有一个Windows Phone应用程序,我想要实现以下目标: 定义一个具有Button和任意控件的(用户)控件。用户单击按钮后,第二个控件变为可见,并且按钮被隐藏。 我可以直接在CodeBehind或ViewModel中实现这一点,但我希望能够在我需要的所有地方重用某种控件。
我google了一下,然后穿过ContentPresenter。 控制:
<StackPanel Background="Red" x:Name="LayoutRoot">
<Button Content="Dummy"/>
<ContentPresenter/>
</StackPanel>
XAML电话:
<controls:MyControl>
<TextBlock Text="Text Content"/>
</controls:MyControl>
但Contentpresenter不能像这样使用,并且永远不会显示Button,因为内容的页面XAML定义将覆盖用户控件xaml中定义的内容。
然后我发现了使用模板的提示,但我还不知道如何将它与我想在这里应用的逻辑相结合。
我应该创建一个userControl,它具有Button的VisibilityProperties和其他控件,然后由模板使用吗?
任何建议或提示都会被认可,以便了解继续搜索的位置。
答案 0 :(得分:0)
怎么样:
控制:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Button Content="ClickMe" Click="Button_Click"/>
<StackPanel Grid.Row="1" x:FieldModifier="public" x:Name="Content"/>
</Grid>
Control.cs:
private void Button_Click(object sender, RoutedEventArgs e)
{
if (Content.Visibility == Visibility.Collapsed)
{
Content.Visibility = Visibility.Visible;
}
else
{
Content.Visibility = Visibility.Collapsed;
}
}
MainPage.xaml中:
<local:MyUserControl1 x:Name="MyControl" HorizontalAlignment="Left" Margin="327,124,0,0" VerticalAlignment="Top"/>
MainPage.xaml.cs(添加内容):
MyControl.Content.Children.Add(new Button());
MyControl.Content.Children.Add(new Button());
MyControl.Content.Children.Add(new Button());
MyControl.Content.Children.Add(new Button());
MyControl.Content.Children.Add(new Button());
MyControl.Content.Children.Add(new Button());