[WPF][MVVM] TreeView: Scroll To Selected Item

0
Comments

Here is the MVVM way to bring selected TreeViewItem into a view. First we need an attached behavior. We cannot use regular behavior because we will attach this property through Style. public class BringSelectedItemIntoViewBehavior { public static readonly DependencyProperty IsBringSelectedIntoViewProperty = DependencyProperty.RegisterAttached( "IsBringSelectedIntoView", typeof (bool), typeof (BringSelectedItemIntoViewBehavior), new PropertyMetadata(default(bool), PropertyChangedCallbac...

Read further...

[WPF] Binding ItemsSource to Enum

2
Comments

Suppose you need to bind ItemsSource dependency property to enum's values. For example in ComboBox. You have following enum: public enum ExampleEnum { Red, Green, Yellow } Now you can use ObjectDataProvider <Window x:Class="ExampleApplication.Window" 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" xmlns:local="clr-namespace...

Read further...

[WPF] ContextMenu Commnad binding issue fixed

0
Comments

If there is no focused element in the window's main focus scope, the CanExecute routing will stop at the ContextMenu, so it will not reach to the CommandBinding on the Window, one workaround is to bind MenuItem's CommandTarget to the main window. <ContextMenu > <ContextMenu.Items> <MenuItem Command="ApplicationCommands.Open" CommandTarget="{Binding Path=PlacementTarget,RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}}"/> </ContextMenu.Ite...

Read further...

[WPF] Auto Scroll Behavior for ListBox

4
Comments

If you want scroll ListBox to the end automatically when new item added in ItemsSource collection you could use following attached behavior. This approach perfectly suit for MVVM way. ListBoxBehavior.cs: using System.Windows; namespace ListBoxBehavior { /// <summary> /// ListBox AutoScroll attached properties /// </summary> public static class ListBoxBehavior { public static readonly DependencyProperty AutoScrollProperty = DependencyProperty.RegisterAttached( "AutoScroll",...

Read further...

Compare performace of WPF Converters, DataTriggers and Direct Binding

1
Comments
Compare performace of WPF Converters, DataTriggers and Direct Binding

Hello, I have made some performance tests with DataTriggers and Converters. For testing purposes I have chosen Visibility property. In first case I have binded Visibility property to IsVisible view model boolean property with standard BooleanToVisibilityConverter converter. <Border Visibility="{Binding IsVisible, Converter={StaticResource BooleanToVisibilityConverter}}" Background="Blue" /> Next case was written with DataTrigger <Border Background="Red">...

Read further...

WPF Binding examples

2
Comments

I have found very nice WPF XAML Data Binding Cheat Sheet, so I'll just leave it here for further use. Basic Binding {Binding} Bind to current DataContext. {Binding Name} Bind to the “Name” property of the current DataContext. {Bindind Name.Length} Bind to the Length property of the object in the Name property of the current DataContext. {Binding ElementName=SomeTextBox, Path=Text} Bind to the “Text” property of the element XAML element with name=”SomeTextBox” or x:Name=”SomeTextBox”. XML Binding...

Read further...

Оптимизации в WPF MultiDataTrigger

0
Comments

Использовал я однажды MultiDataTrigger в WPF приложении, и стало мне интересно а применяется ли для условий оптимизация на подобии оператора && в C#, когда второй операнд вычисляется только если первый равен true. Напомню, для того что бы сработал MultiDataTrigger необходиом выполнение всех условий заданных в блоке Conditions: <Style TargetType="Grid"> <Setter Property="Background" Value="MediumAquamarine" /> <Style.Triggers> <MultiDataT...

Read further...