다음은 다양한 언어에 대해 논의 된 많은 숨겨진 기능입니다. 이제 XAML 및 WPF의 숨겨진 기능에 대해 궁금합니다.
내가 찾은 것은 ListView의 헤더 클릭 이벤트입니다.
<ListView x:Name='lv'
Height="150"
GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler">
GridViewColumnHeader.Click 속성이 나열되지 않습니다.
지금까지 몇 가지 관련 기능 :
또한보십시오:
답변
멀티 바인딩 (StringFormat과 결합) :
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}, {1}">
<Binding Path="LastName" />
<Binding Path="FirstName" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
답변
특정 시나리오에서 바인딩으로 진행되는 작업을 디버깅하는 PresentationTraceSources.TraceLevel 트릭도 있습니다. WindowsBase 어셈블리에서 System.Diagnostics 네임 스페이스를 참조하기 만하면됩니다.
xmlns:sd="clr-namespace:System.Diagnostics;assembly=WindowsBase"
바인딩 식에 다음을 추가합니다.
<TextBlock Text="{Binding Message, sd:PresentationTraceSources.TraceLevel=High}" />
로그는 다음과 같습니다.
System.Windows.Data Warning: 52 : Created BindingExpression (hash=5923895) for Binding (hash=7588182)
System.Windows.Data Warning: 54 : Path: 'Message'
System.Windows.Data Warning: 56 : BindingExpression (hash=5923895): Default mode resolved to OneWay
System.Windows.Data Warning: 57 : BindingExpression (hash=5923895): Default update trigger resolved to PropertyChanged
System.Windows.Data Warning: 58 : BindingExpression (hash=5923895): Attach to System.Windows.Controls.TextBlock.Text (hash=65248697)
System.Windows.Data Warning: 63 : BindingExpression (hash=5923895): Resolving source
답변
3.5sp1은 바인딩에 TargetNullValue를 도입했습니다. 값이 입력되면 바인딩 된 속성이 Null로 설정되고 속성이 Null이면이 값이 표시됩니다.
<TextBox Text="{Binding Total, TargetNullValue=$0.00}" />
답변
3.5sp1은 바인딩 표현식에 StringFormat을 도입했습니다.
<TextBox Text="{Binding Date, StringFormat='{}{0:MM/dd/yyyy}'}" />
답변
때때로 라벨에 표시하기에는 너무 긴 문자열이 표시됩니다. 이 경우 타원을 표시하기 위해의 TextTrimming
속성을 사용할 수 있습니다.TextBlock
<TextBlock
Name="sampleTextBlock"
TextTrimming="WordEllipsis"
TextWrapping="NoWrap"/>
답변
창에 에어로 효과 추가
<Window.Resources>
<ResourceDictionary Source="/PresentationFramework.Aero, Version=3.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=MSIL;component/themes/aero.normalcolor.xaml" />
</Window.Resources>
답변
x : TypeArguments를 사용하는 XAML의 제네릭
XAML에서 ObservableCollection을 사용하려면 XAML에서 선언 할 수 없기 때문에 ObservableCollection에서 파생되는 형식을 만들어야합니다. XAML 2009에서는 x : TypeArguments 특성을 사용하여 제네릭 형식의 형식을 정의 할 수 있습니다.
<!-- XAML 2006 -->
class EmployeeCollection : ObservableCollection<Employee>
{
}
<l:EmployeeCollection>
<l:Employee FirstName="John" Name="Doe" />
<l:Employee FirstName="Tim" Name="Smith" />
</lEmployeeCollection>
<!-- XAML 2009 -->
<ObservableCollection x:TypeArguments="Employee">
<l:Employee FirstName="John" Name="Doe" />
<l:Employee FirstName="Tim" Name="Smith" />
</ObservableCollection />