[wpf] WPF 및 XAML의 숨겨진 기능?

다음은 다양한 언어에 대해 논의 된 많은 숨겨진 기능입니다. 이제 XAML 및 WPF의 숨겨진 기능에 대해 궁금합니다.

내가 찾은 것은 ListView의 헤더 클릭 이벤트입니다.

<ListView x:Name='lv' 
      Height="150" 
      GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler">

GridViewColumnHeader.Click 속성이 나열되지 않습니다.

지금까지 몇 가지 관련 기능 :

또한보십시오:

  1. C #의 숨겨진 기능
  2. Python의 숨겨진 기능
  3. ASP.NET의 숨겨진 기능
  4. Perl의 숨겨진 기능
  5. 자바의 숨겨진 기능
  6. VB.NET의 숨겨진 기능
  7. PHP의 숨겨진 기능
  8. Ruby의 숨겨진 기능
  9. C의 숨겨진 기능
  10. 등등……..


답변

멀티 바인딩 (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"/>

MSDN 링크


답변

창에 에어로 효과 추가

  <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 />