是否可以将clr:string的DynamicResource绑定到另一个源而不是文字?

时间:2014-09-19 11:19:20

标签: wpf string xaml data-binding dynamicresource

<Window x:Class="WpfTutorialSamples.WPF_Application.ResourceSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sys="clr-namespace:System;assembly=mscorlib">

    <Window.Resources>
        <sys:String x:Key="centralRes">Hello, world!</sys:String>
    </Window.Resources>

    <StackPanel Margin="10">
        <TextBox Name="src" />
        <TextBlock Name="dst" Text="{DynamicResource centralRes}" FontSize="56" />
    </StackPanel>
</Window>

我只是在学习,并且好奇我是否可以将string中的centralRes文字绑定到另一个控件的Text属性(例如src.Text),所以当它更新时,dst之类的所有事情都会自动更新。

几乎就像一个信息的中心枢纽。这可能吗?

我想要的例子:

<sys:String x:Key="centralRes" Value="{Binding Text, ElementName=src}">Hello, world!</sys:String>

2 个答案:

答案 0 :(得分:0)

在这种情况下直接绑定到对象(保存在参考资料中)并不容易,如果不想说它是不可能的。但是,您可以将Text绑定到Window并将Path设置为该资源,然后就可以了:

<TextBox Name="src" 
         Text="{Binding RelativeSource={RelativeSource AncestorType=Window},
         Path=Resources[centralRes],Mode=OneWayToSource,
         UpdateSourceTrigger=PropertyChanged}"/>

有关直接绑定到对象的更多信息:这样做时,Source的{​​{1}}将分配给Binding和{{ 1}}应该是StaticResource(否则说2路绑定需要Path或XPath的错误,尽管我们将Mode设置为BindingMode.OneWayToSource)。 Path来源无法使用.。之后代码编译确定,但Binding什么都不做。我怀疑DynamicResource是问题,但正如我所说,Binding无法使用。因此,我们坚持直接绑定到对象。

答案 1 :(得分:0)

使用StaticResource而不是ie。 {StaticResource centralRes}