WPF触发usercontrol中的故事板单击按钮时

时间:2014-06-15 19:40:02

标签: wpf user-controls dependency-properties

我正在尝试开发一个看起来像Windows媒体中心菜单的菜单。所以我将一个usercontrol作为一个包含menuitems的容器(每个menuitems都是一个usercontrol)。我想在点击按钮后隐藏或显示容器。所以在按钮的click事件中,我设置为true依赖属性& #34; DisappearProperty" (位于容器中)。但这种方法不起作用。

消失容器,我触发了一个基于" DisappearProperty"的故事板。的DependencyProperty。这里是代码:

//The container
<UserControl x:Class="MyUserControls.WMCBorder"
         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" 
         mc:Ignorable="d" 
         Name="UC"
         d:DesignHeight="300" d:DesignWidth="300">

 <UserControl.Resources>
    <ControlTemplate x:Key="ctContainer">
        <ControlTemplate.Resources>
    <Storyboard x:Key="SBDisappear">

        <DoubleAnimation Storyboard.TargetName="borderZooming" 
                                         Storyboard.TargetProperty="ScaleX" 
                                         From="1" To="4.0" 
                                         Duration="0:0:0.1"/>
        <DoubleAnimation Storyboard.TargetName="borderZooming" 
                                         Storyboard.TargetProperty="ScaleY" 
                                         From="1" To="4.0" 
                                         Duration="0:0:0.1"/>

                <DoubleAnimation Storyboard.TargetName="container"
                                         Storyboard.TargetProperty="Opacity"
                                         From="1" 
                                         To="0" 
                                         Duration="0:0:0.1"/>


    </Storyboard>

    <Storyboard x:Key="SBDisplay">

        <DoubleAnimation Storyboard.TargetName="borderZooming" 
                                         Storyboard.TargetProperty="ScaleX" 
                                         From="4" To="1.0" 
                                         Duration="0:0:0.1"/>
        <DoubleAnimation Storyboard.TargetName="borderZooming" 
                                         Storyboard.TargetProperty="ScaleY" 
                                         From="4" To="1.0" 
                                         Duration="0:0:0.1"/>

                <DoubleAnimation Storyboard.TargetName="container"
                                         Storyboard.TargetProperty="Opacity"
                                         From="0" 
                                         To="1" 
                                         Duration="0:0:0.1"/>


    </Storyboard>

        </ControlTemplate.Resources>
        <Border x:Name="container">
            <Border.RenderTransform>
                <ScaleTransform x:Name="borderZooming" ScaleX="0.1" ScaleY="0.1"/>
                </Border.RenderTransform>
                <Grid>
        <ContentPresenter />



            </Grid>
        </Border>

            <ControlTemplate.Triggers>
        <DataTrigger Binding="{Binding Path=DisappearProperty}" Value="true">
            <DataTrigger.EnterActions>
                <BeginStoryboard Storyboard="{StaticResource SBDisappear}"/>
            </DataTrigger.EnterActions>
        </DataTrigger>

        <DataTrigger Binding="{Binding Path=DisplayProperty}" Value="True">
            <DataTrigger.EnterActions>
                <BeginStoryboard Storyboard="{StaticResource SBDisplay}"/>
            </DataTrigger.EnterActions>
        </DataTrigger>
    </ControlTemplate.Triggers>

</ControlTemplate>
</UserControl.Resources>
<Grid>

</Grid>

//Code behind of the container
 public partial class WMCBorder : UserControl
{
    public WMCBorder()
    {
        InitializeComponent();
    }



    public bool Disappear
    {
        get { return (bool)GetValue(DisappearProperty); }
        set { SetValue(DisappearProperty, value); }
    }

    // Using a DependencyProperty as the backing store for Disappear.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty DisappearProperty =
        DependencyProperty.Register("Disappear", typeof(bool), typeof(WMCBorder), new PropertyMetadata(false));

    public bool Display
    {
        get { return (bool)GetValue(DisplayProperty); }
        set { SetValue(DisplayProperty, value); }
    }

    // Using a DependencyProperty as the backing store for Disappear.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty DisplayProperty =
        DependencyProperty.Register("Display", typeof(bool), typeof(WMCBorder), new PropertyMetadata(false));


}

//The click event of the Hide button
  private void Button_Click(object sender, RoutedEventArgs e)
    {
        wmcb.Disappear = true;

     }

 //The click event of the Hide button
  private void Button2_Click(object sender, RoutedEventArgs e)
    {
        wmcb.Display= true;

     }

提前致谢。

由于到目前为止我没有收到回复,所以我简化了post

上的问题

0 个答案:

没有答案