c# - 只有一个 TextBlock 的用户控件。如何向消费者公开 TextWrapping 属性?
问题描述
我有一个极简主义者UserControl
,其中包含一个TextBlock
我的原型如下:
<Grid>
<TextBlock x:Name="textBlockExt" x:FieldModifier="public"/>
</Grid>
public partial class TextBlockExt : UserControl
{
public TextBlockExt()
{
InitializeComponent();
DataContext = this;
}
public string Text
{
get => textBlockExt.Text;
set { textBlockExt.Text = value.ToUpper(); } // to be expanded later
}
}
然后我通过
<Grid>
<StackPanel>
<local:TextBlockExt FontSize="30" x:Name="txb" Text="Hello World" TextBlock.TextAlignment="Center"/>
<Button Content="To Upper" Width="100" Click="Button_Click"/>
</StackPanel>
</Grid>
它背后的代码是
public MainWindow()
{
InitializeComponent();
txb.textBlockExt.TextWrapping = TextWrapping.WrapWithOverflow;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
txb.Text = "one two three four five six seven eight";
}
我不喜欢MainWindow
上面构造函数中的代码,需要知道如何extWrapping
在 XAML中设置 T。
解决方案
将属性 TextWrapping 添加到您的 TextBlockExt 类。使用与 Text 属性相同的方式:
public TextWrapping TextWrapping {
get => txtBlockExt.TextWrapping;
set { txtBlockExt.TextWrapping = value: }
}
推荐阅读
- android - Android 设置 ListView 高度依赖于项目高度
- json - 如何将 VS Code ESLint 设置转换为 .eslintrc 文件
- c++ - 使用友元函数前向声明两个依赖类
- linux - 如何使用 bash 脚本在同一终端窗口中打开新的终端选项卡
- java - DataModel 不能转换为 java.util.ArrayList
- css - 如何以编程方式更改 Ionic 5 中的原色?
- amazon-web-services - 如何纠正詹金斯管道中的未知阶段部分错误?
- angular - angular2中的剑道网格-如何停止绑定网格
- jpa - 引起:java.lang.StackOverflowError: null Mapstruct
- nginx - 我的子域无法使用我的 VPS 和 NGINX 来托管应用程序