WPF:如何使自定义控件中的文本显示?

龙猫

我有一个自定义按钮MyButton,其Text属性定义如下:

public static readonly DependencyProperty TextProperty =
    DependencyProperty.Register("Text", typeof(string), typeof(MyButton));

public string Text
{
    get { return GetValue(TextProperty) as string; }
    set { SetValue(TextProperty, value); }
}

Text属性MyButton绑定到对象的属性:

<local:MyButton Text="{Binding Path=SomeString}"/>

我想将绑定文本显示在TextBlock里面MyButton,如何做到这一点?

这是我第一次的错误尝试,修改了二传手

set
{
    SetValue(TextProperty, value);
    aTextBlock.Text = value.ToString(); //this is bad, from what i read
}

但随后在wpftutorial.net/DependencyProperties.html上看到了

不要向这些属性添加任何逻辑,因为仅当您通过代码设置属性时才调用它们。如果从XAML设置属性,则直接调用SetValue()方法。

任何帮助表示赞赏!


更新:以下是xaml用于MyButton

<UserControl ...>
    <Button HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" >
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="3*"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>

            <Viewbox Stretch="Uniform" Grid.Column="0">
                <TextBlock x:Name="aTextBlock" Text="{Binding Path=Text}"/>
            </Viewbox>
            <Viewbox Grid.Column="1">
                <TextBlock Text="someText" />
            </Viewbox>
        </Grid>
    </Button>
</UserControl>

如图所示,我试图绑定TextaTextBlock,但文字一直没有出现; 仅显示第1列中的“ someText”。

按照@Krishna的建议进行此操作

<TextBlock x:Name="aTextBlock" Text="{TemplateBinding Text}"/>

不会与错误一起编译

The member "Text" is not recognized or is not accessible.

抱歉,我知道这应该很简单,但是还无法正常工作。我没有为此控件使用模板。谢谢!

dkozl

如果Text是的属性,UserControl则需要更改绑定源,否则它将Text在current中寻找DataContext您可以通过以下方式来做到这一点RelativeSource

<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}, Path=Text}"/>

或给个UserControl名字

<UserControl ... x:Name="myUserControl">

然后用ElementName在你的装订中

<TextBlock Text="{Binding ElementName=myUserControl, Path=Text}"/>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

WPF 自定义控件显示内容

如何覆盖自定义用户控件中的文本样式?

WPF左键,居中文本,自定义控件中的右键

WPF自定义控件不显示验证错误

如何在自定义控件中显示选择器控件项?

如何设置自定义字体以显示邮件中的文本

如何在自定义ToolStripItem中显示菜单文本?

如何在 Android 的通知中显示自定义文本

WPF自定义控件/控件模板

如何从自定义用户控件 WPF、C# 中的枚举自定义属性获取值?

如何在自定义控件中获取控件?

WPF:自定义创建的用户控件中的数据绑定

在WPF MaterialDesign中悬停自定义控件

WPF-更新自定义控件中的值

WPF KeyBinding 命令未在自定义控件中触发

WPF自定义控件中的依赖关系

自定义 WPF 控件中的数据绑定

处理 MVVM (WPF) 中自定义控件的属性

在同一个库中如何有许多wpf自定义控件?

如何在自定义WPF控件(如折线图)中呈现动态数据?

如何在XAML WPF中访问自定义控件的属性

如何在WPF中的自定义窗口中查找控件

如何回调到自定义控件 WPF 中的代码后面

WPF如何将DataTrigger应用于XAML中的“自定义用户控件”类

如何在WPF中为Tab控件提供自定义形状?

如何使用XAML中的另一个自定义控件基类使WPF在视图中实例化一个自定义控件?

在自定义WPF控件中强制重新绘制自定义绘制的UIElement

如何设置要在工具箱中显示的自定义控件的说明?

如何从C#中的类库显示自定义用户控件