[英]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.