<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>
答案 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}