相关疑难解决方法(0)

使用EventTrigger设置属性

我希望能够使用EventTrigger设置属性,这有很多问题.

1)EventTriggers仅支持Actions,因此我必须使用storyBoard来设置我的属性.

2)一旦我使用故事板,我有两个选择:

  • 停止:动画停止后,值将恢复为动画开始之前
  • HoldEnd:这会锁定属性,因此代码和用户交互都不能更改动画所持有的属性.

在下面的示例中,我想在单击按钮时将IsChecked属性设置为False,并且我希望用户能够更改IsChecked和/或我希望能够更改代码中的属性.

例:

<EventTrigger
    SourceName="myButton"
    RoutedEvent="Button.Click">
    <EventTrigger.Actions>
        <BeginStoryboard>
            <Storyboard>
                <BooleanAnimationUsingKeyFrames
                    Storyboard.TargetName="myCheckBox"
                    Storyboard.TargetProperty="IsChecked"
                    FillBehavior="Stop">
                    <DiscreteBooleanKeyFrame
                        KeyTime="00:00:00"
                        Value="False" />
                </BooleanAnimationUsingKeyFrames>
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger.Actions>
</EventTrigger>
Run Code Online (Sandbox Code Playgroud)

我意识到在故事板完成后我可以使用"已完成"事件将值设置为False.但是,在这种情况下,我想在XAML中包含逻辑,因为此逻辑将用于自定义控件,并且仅特定于UI.

wpf xaml triggers eventtrigger

67
推荐指数
4
解决办法
11万
查看次数

在'System.Windows.Controls.Button'的名称范围中找不到名称

我有以下Template为我Button

<Window.Resources>
    <DataTemplate x:Key="ItemTemplate">
        <DockPanel Width="Auto">
            <Button DockPanel.Dock="Top">                                           
                <Button.Template>
                    <ControlTemplate >
                        <Image  Source="{Binding image}"/>
                    </ControlTemplate>
                </Button.Template>                    
                <Button.Triggers>
                    <EventTrigger RoutedEvent="Button.Click">
                        <BeginStoryboard>
                            <Storyboard>
                                <local:GridLengthAnimation
                                    Storyboard.TargetName="col1"
                                    Storyboard.TargetProperty="Width"
                                    LeftGridWidth="*" RightGridWidth="1*" Duration="0:0:2"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger>
                </Button.Triggers>
            </Button>
        </DockPanel>
    </DataTemplate>
</Window.Resources>

<Grid>
     ...
     ...
     <Grid Grid.Row="2" >

        <Grid.ColumnDefinitions>
            <ColumnDefinition Name="col1" Width="{Binding ElementName=root, Path=DataContext.gla.LeftGridWidth}" />
            <ColumnDefinition Name="col2" Width="{Binding ElementName=root, Path=DataContext.gla.RightGridWidth}" />
        </Grid.ColumnDefinitions>

        <Grid x:Name="LeftGrid" Grid.Row="2" Grid.Column="0" >
              <Border BorderThickness="1" BorderBrush="Red">
                  <ItemsControl ItemTemplate="{StaticResource ItemTemplate}" ItemsSource="{Binding ElementName=root, Path=DataContext._movies}">
                      <ItemsControl.ItemsPanel>
                          <ItemsPanelTemplate>
                              <UniformGrid Columns="5"/>
                          </ItemsPanelTemplate>
                      </ItemsControl.ItemsPanel>
                  </ItemsControl>
              </Border> …
Run Code Online (Sandbox Code Playgroud)

c# wpf storyboard

9
推荐指数
1
解决办法
6726
查看次数

从子按钮的按下关闭弹出窗口?

我有一个Popup包含"关闭"按钮.弹出窗口由切换按钮打开(其IsOpen属性绑定ToggleButton到此答案提供的).如何在按下按钮时关闭弹出窗口?这是我的XAML:

<Canvas x:Name="LayoutRoot">
    <ToggleButton x:Name="ToggleButton"
            Style="{DynamicResource ToggleButtonStyle}" Height="51" Canvas.Left="2.999" Width="50.333" IsHitTestVisible="{Binding ElementName=Popup, Path=IsOpen, Mode=OneWay, Converter={StaticResource BoolInverter}}"/>
    <Popup x:Name="Popup" IsOpen="{Binding IsChecked, ElementName=ToggleButton}" StaysOpen="False" AllowsTransparency="True">
        <Canvas Height="550" Width="550">
            <Grid Height="500" Width="500" Canvas.Left="25" Canvas.Top="25" d:LayoutOverrides="Width, Height, Margin">
                <Grid.Effect>
                    <DropShadowEffect BlurRadius="15" ShadowDepth="0"/>
                </Grid.Effect>
                <Grid.RowDefinitions>
                    <RowDefinition Height="0.132*"/>
                    <RowDefinition Height="0.868*"/>
                </Grid.RowDefinitions>
                <Rectangle x:Name="Background" Fill="#FFF4F4F5" Margin="0" Stroke="Black" RadiusX="6" RadiusY="6" Grid.RowSpan="2"/>
                <Border x:Name="TitleBar" BorderThickness="1" Height="70" VerticalAlignment="Top" Margin="0,0.5,0,0" CornerRadius="5">
                    <DockPanel>
                        <TextBlock TextWrapping="Wrap" Text="FOOBAR POPUP TITLE" FontSize="24" FontFamily="Arial Narrow" Margin="17,0,0,0" d:LayoutOverrides="Height" VerticalAlignment="Center" …
Run Code Online (Sandbox Code Playgroud)

wpf

8
推荐指数
1
解决办法
7073
查看次数

为什么我不能在事件触发器中放置一个Setter

我试图为支持拖放的列表框添加一些可视化反馈.好像我应该能够将一些setter添加到EventSetter并完成.但是,事件排定器不支持setter.我是否真的必须制作故事板才能实现此行为?

微软对此的理性是什么?

   <Style TargetType="{x:Type ListBox}">
        <Style.Triggers>
             <EventTrigger RoutedEvent="DragEnter">
                 <!--WHy Can't i Add seters here? e.g.
                <Setter Property="ForeColor" Value="Red"> 
                -->
            </EventTrigger>
        </Style.Triggers>
    </Style>
Run Code Online (Sandbox Code Playgroud)

.net wpf styles

5
推荐指数
1
解决办法
5069
查看次数

WPF弹出按钮问题

在WPF中我希望有一个按钮,当它被点击时,它会打开或关闭一个Popup,具体取决于它是否已经打开(如果它已打开则关闭它,如果它已关闭则打开它),我想在XAML中完全执行此操作.这可能吗?

谢谢,
罗伊

wpf xaml popup button

1
推荐指数
1
解决办法
3697
查看次数

标签 统计

wpf ×5

xaml ×2

.net ×1

button ×1

c# ×1

eventtrigger ×1

popup ×1

storyboard ×1

styles ×1

triggers ×1