繁体   English   中英

从资源文件绑定文本时,TextBlock GetBindingExpression获取为Null

[英]TextBlock GetBindingExpression gets Null when text binded from resource file

我有一个文本块,其中文本与资源文件绑定在一起,一切正常,但GetBindingExpression始终返回null。 还有其他绑定方法吗

<TextBlock x:Name="Slide"                       
Text="{x:Static prop:Resources.SlideToCollect}"/>

Slide.GetBindingExpression(TextBlock.TextProperty)

x:Static-它没有绑定,也没有创建任何BindingExpression实例。 x:Static- 它是WPF标记扩展 ,允许您引用以符合CLS的方式定义的任何静态按值代码实体。 在您的情况下-您从Resource类的Resource.SlideToCollect静态属性(或字段或常量等)中获取值,并将其分配给TextBlock的Text属性。

如果要完全使用Binding,则需要Binding markup extension 下面是示例代码:

<Window 
x:Class="WpfApplication66.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 

xmlns:app="clr-namespace:WpfApplication66"
Title="MainWindow" Height="350" Width="525"
>
<Window.Resources>
    <app:Resources x:Key="Resources"/>
</Window.Resources>
<Grid>
    <TextBlock x:Name="Slide" Text="{Binding SlideToCollect, Source={StaticResource Resources}}"/>
</Grid>

并在窗口后面添加代码:

public class Resources
{
    public string SlideToCollect { get { return "i'am SlideToCollect"; } }
}

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        BindingExpression be = Slide.GetBindingExpression(TextBlock.TextProperty);
    }
}

现在,变量“ be”将分配给BindingExpression类的实例。 不要忘记用您的项目名称替换WpfApplication66;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM