【问题标题】:Is it possible to bind a DynamicResource of clr:string to another source instead of literal?是否可以将 clr:string 的 DynamicResource 绑定到另一个源而不是文字?
【发布时间】:2014-09-19 11:19:20
【问题描述】:
<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>

我只是在学习,很好奇我是否可以将 centralRes 中的 string 文字绑定到另一个控件的 Text 属性(如 src.Text),所以当它更新时,所有绑定到它的东西都像 dst自动更新。

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

我想要的示例:

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

【问题讨论】:

  • 我在整个应用程序中都使用了&lt;sys:Boolean&gt;True&lt;/sys:Boolean&gt;,并且没有任何问题。
  • @XAMlMAX 我需要一种在 XAML 中将 True 或文字值绑定到另一个源的方法。我知道如果我在代码中更改它,它会神奇地工作。
  • 所以您需要它像MainViewModel 一样依赖并在整个应用程序中显示相同的信息吗?显然只有绑定到该资源的项目。

标签: wpf string xaml data-binding dynamicresource


【解决方案1】:

如果不想说不可能的话,在这种情况下直接绑定到对象(保存在资源中)并不容易。但是,您可以将Text 绑定到Window 并将Path 设置为该资源,它可以正常工作:

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

有关直接绑定到对象的更多信息: 这样做时,BindingSource 将分配给StaticResourcePath 应该是. (否则,尽管我们将 Mode 设置为 BindingMode.OneWayToSource,但会显示 2 路绑定需要 Path 或 XPath 的错误)。 Binding 的源无法使用 DynamicResource。之后代码编译 OK,但绑定什么也不做。我怀疑StaticResource 是问题所在,但正如我所说,DynamicResource 不能使用。因此,我们被困在直接绑定到对象上。

【讨论】:

    【解决方案2】:

    使用 StaticResource 代替,即。 {StaticResource centralRes}

    【讨论】:

      猜你喜欢
      • 2015-06-18
      • 1970-01-01
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-28
      • 2020-05-09
      相关资源
      最近更新 更多