第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

故事板的數(shù)據(jù)觸發(fā)器未觸發(fā)

故事板的數(shù)據(jù)觸發(fā)器未觸發(fā)

C#
素胚勾勒不出你 2023-09-24 17:07:27
我在同一個(gè)圖像上有 5 個(gè)不同的 DataTrigger,每個(gè)都用于相同的 Binding,但具有不同的值,每個(gè)將圖像旋轉(zhuǎn)不同的角度。每次更改該值后,該值都會(huì)重置為 0。當(dāng)我沒有添加該DataTrigger.ExitActions> <RemoveStoryboard>東西時(shí),它們工作了一次,但它們只工作了一次,所以如果steps綁定再次獲得這個(gè)值,它們就不會(huì)觸發(fā)。<Image x:Name="drehteller" HorizontalAlignment="Center" VerticalAlignment="Center" RenderTransformOrigin="0.5,0.5" Source="{Binding drehteller_image}">        <Image.RenderTransform>            <RotateTransform/>        </Image.RenderTransform>        <Image.Style>            <Style>                <Style.Triggers>                    <DataTrigger Binding="{Binding steps}" Value="1">                        <DataTrigger.EnterActions>                            <BeginStoryboard x:Name="Storyboard1Step">                                <Storyboard>                                    <DoubleAnimation                                        Storyboard.TargetProperty="RenderTransform.Angle"                                         By="72"                                        Duration="00:00:00:03"                                    />                                </Storyboard>                            </BeginStoryboard>也許有人知道我做錯(cuò)了什么,我認(rèn)為這RemoveStoryboard可能會(huì)解決他們只解雇一個(gè)的問題,但看起來他們沒有。編輯:發(fā)現(xiàn)如果沒有,ExitActions我可以根據(jù)需要多次觸發(fā)值 1 的觸發(fā)器,只要值永遠(yuǎn)不會(huì)高于 1,所以如果我一旦觸發(fā)值 2 的觸發(fā)器,值 1 的觸發(fā)器將不會(huì)不再工作,如果我使用值 3 觸發(fā)觸發(fā)器,則值 2 的觸發(fā)器將不再工作。等等,猜猜你已經(jīng)明白了。
查看完整描述

2 回答

?
絕地?zé)o雙

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊

一個(gè)非常簡單直接的解決方案是在后面的代碼中運(yùn)行動(dòng)畫:


var viewModel = new ViewModel();


viewModel.PropertyChanged += (s, e) =>

{

    if (e.PropertyName == nameof(viewModel.Steps))

    {

        drehteller.RenderTransform.BeginAnimation(

            RotateTransform.AngleProperty,

            new DoubleAnimation

            {

                By = viewModel.Steps * 72,

                Duration = TimeSpan.FromSeconds(3)

            });

    }

};


DataContext = viewModel;

這與 MVVM 并不矛盾,因?yàn)橐晥D模型仍然對(duì)視圖一無所知。這是一個(gè)純粹的視圖方面。


查看完整回答
反對(duì) 回復(fù) 2023-09-24
?
犯罪嫌疑人X

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊

您還可以使用附加行為來完成此操作。這些是可重用的視圖邏輯,您可以將它們附加到各種 UI 元素,而無需將它們放在代碼隱藏中。

您將需要Microsoft.Xaml.Behaviors.Wpf NuGet 包(這曾經(jīng)作為 Visual Studio 的“Blend for Visual Studio SDK for .NET”組件的一部分進(jìn)行分發(fā),但在 VS 2019 中發(fā)生了變化)。

定義你的行為。請(qǐng)注意,AssociatedObject指的是Image與此行為相關(guān)的 ,請(qǐng)參見下文。

public class AnimateBehavior : Behavior<Image>

{

? ? public int Steps

? ? {

? ? ? ? get => (int)GetValue(StepsProperty);

? ? ? ? set => SetValue(StepsProperty, value);

? ? }

? ? public static readonly DependencyProperty StepsProperty =

? ? ? ? DependencyProperty.Register(nameof(Steps), typeof(int), typeof(AnimateBehavior), new PropertyMetadata(0, (d, e) => ((AnimateBehavior)d).StepsChanged(e)));


? ? private void StepsChanged(DependencyPropertyChangedEventArgs e)

? ? {

? ? ? ? if (AssociatedObject == null)

? ? ? ? ? ? return;


? ? ? ? AssociatedObject.RenderTransform.BeginAnimation(

? ? ? ? ? ? RotateTransform.AngleProperty,

? ? ? ? ? ? new DoubleAnimation()

? ? ? ? ? ? {

? ? ? ? ? ? ? ? By = (int)e.NewValue * 72,

? ? ? ? ? ? ? ? Duration = TimeSpan.FromSeconds(3),

? ? ? ? ? ? });

? ? }

}

然后在您的 XAML 中,您將需要此命名空間:


xmlns:behaviors="http://schemas.microsoft.com/xaml/behaviors"

然后:


<Image ...>

? ? <Image.RenderTransform>

? ? ? ? <RotateTransform/>

? ? </Image.RenderTransform>

? ? <behaviors:Interaction.Behaviors>

? ? ? ? <local:AnimateBehavior Steps="{Binding steps}"/>

? ? </behaviors:Interaction.Behaviors>

</Image>


查看完整回答
反對(duì) 回復(fù) 2023-09-24
  • 2 回答
  • 0 關(guān)注
  • 169 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)