0
<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>
4

2 に答える 2

0

この場合、(リソースに保存された) オブジェクトに直接バインドすることは、不可能だと言いたくなければ簡単ではありません。ただし、 を にバインドしText、をそのリソースにWindow設定すると、問題なく動作します。Path

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

オブジェクトへの直接バインディングの詳細:このようにするとSourceBindingが に割り当てられ、 が割り当てられます(そうしないと、Mode を BindingMode.OneWayToSource に設定しても、双方向バインディングにはパスまたは XPath が必要であるというエラーが表示されます)。のソースには使用できません。その後、コードは正常にコンパイルされますが、バインディングは何もしません。問題があるとは思いませんが、私が言ったように、使用できません。したがって、オブジェクトに直接バインドすることに行き詰まっています。StaticResourcePath.DynamicResourceBindingStaticResourceDynamicResource

于 2014-09-19T16:18:28.243 に答える