有效的选框文本控制

本文关键字:文本 控制 有效 | 更新日期: 2023-09-27 18:07:39

在我们的WPF应用程序中,我们需要一个简单的选框文本控件,它在性能方面轻量级且高效。我尝试用DoubleAnimation这样做,但它使用了大量的资源(主要来自CPU)。我还尝试设置TextBlock的文本属性,并从每100纳秒开始删除一个字符。这也没有提高性能。
那么在WPF中设计选框文本控件的最佳和最有效的方法是什么呢?(我们使用的是。net 4.0)

有效的选框文本控制

感谢@Chris W.,这个问题是我最后想到的(我想要rtl语言的从左到右动画):

<Window x:Class="WpfApplication9.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfApplication9"
        Title="MainWindow" Height="83" Width="222">
    <Grid x:Name="layoutRoot">
        <Canvas x:Name="canvas">
            <TextBlock Text="StackOverflow is just awesome!" FontSize="25"  x:Name="tb1" Canvas.Left="-131" Loaded="tb1_Loaded">
                <TextBlock.Resources>
                    <Storyboard x:Key="slide">
                        <DoubleAnimation From="0" To="{Binding Width, ElementName=tb1}" Duration="00:00:4"
                      Storyboard.TargetProperty="X"
                      Storyboard.TargetName="transferCurreny"
                      RepeatBehavior="Forever"/>
                    </Storyboard>
                </TextBlock.Resources>
                <TextBlock.RenderTransform>
            <TranslateTransform x:Name="transferCurreny" X="0"/>
        </TextBlock.RenderTransform>
                <TextBlock.Triggers>
                    <EventTrigger RoutedEvent="TextBlock.Loaded">
                        <BeginStoryboard Storyboard="{StaticResource slide}" />
                    </EventTrigger>
                </TextBlock.Triggers>
            </TextBlock>
        </Canvas>
    </Grid>
</Window>

后台代码:

using System.Windows;
namespace WpfApplication9
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        private void tb1_Loaded(object sender, RoutedEventArgs e)
        {
            tb1.Width = tb1.ActualWidth;
        }
    }
}