Tamam, beni gerçekten güvende tutan bir şeye girdim.Neden WMPF'de TextBox.Text animasyonu yapılamıyor?
Birkaç ilgisiz sorudan oluşan bir geliştiriciye yardımcı oluyordum ve projesinde bazı TextBlock (ler) 'e metinleri canlandırıyordu. Böylece, masama geri döndüm ve projeyi (sorularına cevap vermek için) yeniden oluşturdum, ancak TextBlock yerine TextBox'u yanlışlıkla kullandım. Metnim hiç hareketli değildi! (Bir çok yardım, öyleydi!)
Sonunda, onun xamlının TextBlock kullanıyor olduğunu ve benim de TextBox kullanıyor olduğunu anladım. İlginç olan, TextBox kullanırken Blend'in anahtar kareler oluşturmamasıydı. Bu yüzden, TextBlock (ler) i kullanarak Blend'de çalıştım ve sonra xaml'i TextBlock (lar) 'ı TextBox (es)' e dönüştürerek değiştirdim. Blend animasyon anahtar kareleri oluşturmak biliyorum ... ve kadar akıllı sanki sadece olurdu (
InvalidOperationException: '(0)' Storyboard.TargetProperty path contains nonanimatable property 'Text'.
Gözüken o ki,: Ben projeyi ran, ben aşağıdaki hata var değeri doğrudan TextBox'ta değiştirin). Blend için +1.
Yani, soru neden oldu: Neden TextBox.Text animasyonu değil? Normal cevap, animasyon yaptığınız özelliğin bir DependencyProperty olmamasıdır. Ancak, bu durumda, TextBox.Text bir DependencyProperty olduğunu.
Şimdi şaşkınım! Neden TextBox.Text'i canlandırmıyorsunuz?
bana sorun göstermek için bazı xaml dahil edelim. Aşağıdaki xaml çalışır ... ama TextBlock kullanır.
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="TextBoxTextQuestion.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640"
Height="480"
>
<Window.Resources>
<Storyboard x:Key="animateTextStoryboard">
<StringAnimationUsingKeyFrames Storyboard.TargetProperty="(TextBlock.Text)" Storyboard.TargetName="textControl">
<DiscreteStringKeyFrame KeyTime="0:0:1" Value="Goodbye"/>
</StringAnimationUsingKeyFrames>
</Storyboard>
</Window.Resources>
<Window.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard Storyboard="{StaticResource animateTextStoryboard}"/>
</EventTrigger>
</Window.Triggers>
<Grid x:Name="LayoutRoot">
<StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock x:Name="textControl" Text="Hello" FontFamily="Calibri" FontSize="32"/>
<TextBlock Text="World!" Margin="0,25,0,0" FontFamily="Calibri" FontSize="32"/>
</StackPanel>
</Grid>
</Window>
xaml çalışmak ve kullanan değil aşağıdaki TextBox.Text:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="TextBoxTextQuestion.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640"
Height="480"
>
<Window.Resources>
<Storyboard x:Key="animateTextStoryboard">
<StringAnimationUsingKeyFrames Storyboard.TargetProperty="(TextBox.Text)" Storyboard.TargetName="textControl">
<DiscreteStringKeyFrame KeyTime="0:0:1" Value="Goodbye"/>
</StringAnimationUsingKeyFrames>
</Storyboard>
</Window.Resources>
<Window.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard Storyboard="{StaticResource animateTextStoryboard}"/>
</EventTrigger>
</Window.Triggers>
<Grid x:Name="LayoutRoot">
<StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBox x:Name="textControl" Text="Hello" FontFamily="Calibri" FontSize="32"/>
<TextBox Text="World!" Margin="0,25,0,0" FontFamily="Calibri" FontSize="32"/>
</StackPanel>
</Grid>
</Window>
İlginç ... buna hiç gerek yoktu, ama her zaman olacağını düşündüm. Umarım birisinin bir cevabı vardır. Üzgünüm, yardım edemem. –
Bir göz attığınız için teşekkür ederiz. Kabul ediyorum ... bu biraz akademik bir sorudur ... ama canlandıramadığım bir DependencyProperty görmeyi çok merak ediyorum. – cplotts