我的文本框里面有URL,当你把URL(长)放入其中时,我希望它向下移动一行以查看URL的最后一个字符。
我怎么能实现它
改变宽度大小?
答案 0 :(得分:1)
TextBlock
类具有TextBlock.TextTrimming
Property功能,使用户可以在文本末尾添加省略号(...),该省略号太长而无法在TextBlock
中显示。如果您的TextBox
不用于文本输入,那么您只需使用TextBlock
控件即可。
如果你真的需要使用TextBox
,那么遗憾的是它没有这样的属性。一种替代方法是使用具有此属性的自定义TextBox
。您可以在CodeProject的WPF TextBox With Ellipsis页面中找到相关示例。
更新>>>
由于你没有显示任何代码,没有人能告诉你你做错了什么。无论哪种方式,这是一个简单的问题我确定你可以自己修复。将其添加到其他地方的其他视图中:
<TextBlock Text="123456789012345678901234567890123456789012345678901234567890"
Width="100" TextTrimming="WordEllipsis" />
现在您应该可以在TextBlock
的末尾看到省略号。这是多么简单。如果您的示例不起作用,则您通过添加其他内容使其无效。
答案 1 :(得分:1)
当焦点丢失时,尝试将文本框滚动到文本的开头(不确定如何使用数据绑定):
private void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
(sender as TextBox).ScrollToHome();
}
您还可以创建行为以避免直接事件处理:
添加对System.Windows.Interactivity的引用(与Expression Blend一起安装)。
添加行为类:
using System.Windows.Controls;
using System.Windows.Interactivity;
namespace WpfApplication2
{
public class AutoScrollToHomeBehavior : Behavior<TextBox>
{
protected override void OnAttached()
{
AssociatedObject.LostFocus += (tb, args) =>
{
(tb as TextBox).ScrollToHome();
};
}
}
}
将行为附加到文本框:
<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:e="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:local="clr-namespace:WpfApplication2"
Title="MainWindow" Height="350" Width="525">
<Grid>
<StackPanel Orientation="Vertical">
<TextBox HorizontalAlignment="Left" Height="23" Width="120">
<e:Interaction.Behaviors>
<local:AutoScrollToHomeBehavior />
</e:Interaction.Behaviors>
</TextBox>
<TextBox HorizontalAlignment="Left" Height="23" Width="120">
<e:Interaction.Behaviors>
<local:AutoScrollToHomeBehavior />
</e:Interaction.Behaviors>
</TextBox>
</StackPanel>
</Grid>
</Window>