2014-09-19 1 views
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> 

것은 그냥 배우고, 내가 (같은 src.Text) 다른 컨트롤의 Text 속성에 centralResstring 문자를 결합 할 수 있는지 궁금해서, 그래서 업데이트 할 때, dst처럼 바인딩 모든 것이 자동으로 업데이트하고 있습니다.clr : string의 DynamicResource를 리터럴 대신 다른 소스에 바인딩 할 수 있습니까?

정보의 중심 허브와 거의 같습니다. 가능한가요? 내가 원하는 것을

예 :

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

응용 프로그램 전체에서 ' True'을 사용했는데 문제가 없었습니다. – XAMlMAX

+0

@XAMlMAX 문자열의 경우에는 'True'또는 리터럴 값을 XAML의 다른 소스에 바인딩하는 방법이 필요합니다. 코드에서 변경하면 모든 것이 마 법적으로 작동한다는 것을 안다. – sprocket12

+0

그래서'MainViewModel'처럼 의존하고 앱 전체에 동일한 정보를 표시해야합니까? 분명히 해당 리소스에 바인딩 된 항목 만. – XAMlMAX

답변

0

이 경우 (자료 저장) 개체에 직접 바인딩은 불가능 말을 원하지 않는 경우 쉬운 일이 아니다. 당신은 WindowText을 바인딩하고 해당 자원에 Path을 설정하고 확인을 작동 할 수 그러나 :

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

개체에 직접 바인딩에 대해 자세히 : 다음과 같이 수행 할 때BindingSource이 될 것입니다 StaticResourcePath에 할당 된 값은 .이어야합니다. 그렇지 않으면 모드를 BindingMode.OneWayToSource로 설정했지만 경로와 XPath가 필요하다는 오류가 발생합니다. Binding 님의 소스는 DynamicResource을 (를) 사용할 수 없습니다. 그 후 코드 을 컴파일하지만 바인딩은 아무 것도 수행하지 않습니다. 나는 StaticResource이 문제라고 의심하지만, 내가 말했듯이 DynamicResource은 사용할 수 없습니다. 따라서 우리는 객체에 직접 바인딩해야합니다.

0

대신 StaticResource를 사용하십시오. {StaticResource centralRes}

관련 문제