2012-07-08 4 views
1
<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:System="clr-namespace:System;assembly=mscorlib" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 
     <System:DateTime x:Key="d" >2012/7/8</System:DateTime> 
    </Window.Resources> 
    <StackPanel> 
     <ContentControl Content="{Binding}" DataContext="{StaticResource d}" /> 
     <TextBlock Text="{Binding}" DataContext="{StaticResource d}"/> 
    </StackPanel> 
</Window> 

이 코드는 다음과 같은 창을 제공합니다.동일한 바인딩, 다른 프리젠 테이션?

enter image description here

ContentControl을 적용 할 때 이상하게 동일한 결합은 일 부분을 도시 TextBlock에 적용되는 경우에도 시간 부분을 나타낸다.

나는 그 이유를 알고 호기심을 가지고 프레젠테이션을 교환 할 수 있는지 묻습니다. TextBlock은 날짜 부분 만 표시하고 ContentControl은 두 부분을 보여줍니다.

감사합니다.

답변

3

ContentControl의 경우 ContentStringFormat을 사용하십시오. TextBlock를 들어, 사용하십시오 BindingStringFormat A를 : 짧은에서

<ContentControl Content="{Binding}" ContentStringFormat="dd/MM/yyyy HH:mm:ss"/> 
<TextBlock Text="{Binding ., StringFormat=dd/MM/yyyy}"/> 

는 차이가 ContentControl 콘텐츠로 오래된 object가 (단지는 string되지 않음) TextBlock.Text 반면 단지가 될 수 있습니다 보여줄 수 있다는 사실에 온다 .

+0

당신은 매우 빨리 대답했습니다! 나는 나의 자신의 포스트를 간신히 읽는 끝냈다. 감사. – Gqqnbig

관련 문제