저는 이 컴포넌트를 사용하지 않고 있지만, 지금 DevExpress를 사용하시는 분들에게 유용한 정보가 될 것 같습니다.
DevExpress Bindings
WPF 기본 바인딩을 넘어 DevExpress에서 제공하는 재미있는 바인딩 기술들을 소개합니다. 여기
어떠한 문법, 방식을 제공하고 있는지 주요 예제들을 한번 살펴보겠습니다.
DXBinding
C# Boolean 논리 연산자, 메서드, 생성자 등을 사용할 수 있습니다.
IsEnabled="{DXBinding '!HasError'}"
IsEnabled="{DXBinding 'GetHasError(Text)'}"
Margin="{DXBinding 'new $Thickness(LeftIndent, 0, 0, 0)'}"
DXCommand
Execute, CanExecute, 메서드 멀티 호출, 변수 지정, 형 변환 등 유연하게 활용할 수 있습니다.
<Button Content="OK"
Command="{DXCommand Execute='Save(); Close()', CanExecute='CanSave() and CanClose()'}"/>
<TextBlock x:Name="tb" Text="text"/>
<Button Content="OK"
Command="{DXCommand Execute='Save(@e(tb).Text)', CanExecute='CanSave(@e(tb).Text)'}"/>
<TextBlock x:Name="tb" Text="text"/>
<Button Content="OK"
Command="{DXCommand Execute='Save(@parameter)', CanExecute='CanSave(@parameter)'}"
CommandParameter="{DXBinding @e(tb).Text}"/>
<Button Command="{DXCommand '@e(checkBox).IsChecked=true'}"/>
DXViewModel
Behaivor 선언 없이도 유연하게 뷰모델 메서드를 접근할 수 있군요.
view.xaml
<StackPanel>
<StackPanel.DataContext>
<local:ViewModel />
</StackPanel.DataContext>
<Button Content="OK" Loaded="{DXEvent Handler='Initialize()'}" />
<Button Content="OK" Loaded="{DXEvent Handler='Initialize(); Load()'}" />
</StackPanel>
viewmodel.cs
public class ViewModel
{
public void Initialize() { }
public void Load() { }
}
Event arguments도 중간에서 하이재킹할 수도 있습니다.
view.xaml
<TextBlock x:Name="tb" Text="text"/>
<Button Content="OK"
Loaded="{DXEvent Handler='Initialize(@sender.Content, @args, @e(tb).Text)'}"/>
viewmodel.cs
public void Initialize(object content, RoutedEventArgs args, string text) { }
더 자세한 내용은 아래 공식 문서를 통해 확인하실 수 있습니다.
읽어주셔서 감사합니다.