Friday, August 19, 2016

Code snippet: Open Folder Browser Dialog in WPF

Be The First To Comment
Install WPFFolderBrowser 1.0.2 from nuget gallery to use the Windows Vista / Windows 7 Folder Browser Dialog from your WPF projects, without any additional dependencies.

Install-Package WPFFolderBrowser
then import WPFFolderBrowser

using WPFFolderBrowser;
private void BrowseFolder()
        {
            WPFFolderBrowserDialog dd = new WPFFolderBrowserDialog();
            var result = dd.ShowDialog();
            if (result.HasValue)
            {
                TxtFvsAccessDbPath = dd.FileName;
            }
        }

Code snippet: WPF ListView SelectionChanged Event Handling in ViewModel

Be The First To Comment
Solution from Dhaval Patel in Sliverlight application works perfectly on my WPF application. I prefer his idea because it is more clear and cleaner than other solutions that  I have came with. The event handling approach explained as -"This is the way where You can Reach the Selection changed events in Your MVVM Application First Of all i tell you that Command Property only work in Button now we have to Explicitly binding that property in our Selection Changed event like List box or combo box in Your XMAL file"
<ListBox Name="MyListBox" ItemsSource="{Binding ListItems}" Height="150" Width="150" Margin="281,32,-31,118">

        <Local:Interaction.Triggers>
            <Local:EventTrigger EventName="SelectionChanged">
                <Local:InvokeCommandAction Command="{Binding MyCommand}" CommandParameter="{Binding ElementName=MyListBox,Path=SelectedItem}"/>
            </Local:EventTrigger>
        </Local:Interaction.Triggers>
    </ListBox>
for this you have to add dll Syatem.Windows.Interactivity now u have to add references in your xaml file namespace like
 xmlns:Local="clr-namespace:System.Windows.Interactivityassembly=System.Windows.Interactivity"

Thursday, August 18, 2016

Code snippet: Data binding between ViewModel and Radio Button in WPF

Be The First To Comment
Following example shows the data binding between radio buttons and ViewModel in WPF.

Parts of View.xaml

<Grid.Resources>
    <Utilities:RadioHelper x:Key="RadioConverter" />
    <Utilities:RadioHelper x:Key="InverseRadioConverter" Inverse="True" />
</Grid.Resources>
<RadioButton Name="radFvsOracle" GroupName="fvsStorage" Content="Oracle" Margin="7,0,0,0" IsChecked="{Binding Path=RadFvsResults, Converter= {StaticResource ResourceKey=RadioConverter}}"></RadioButton>
<RadioButton Name="radFvsAccess" GroupName="fvsStorage" Content="Access" Grid.Column="2" Margin="11,0,0,0" IsChecked="{Binding Path=RadFvsResults, Converter= {StaticResource ResourceKey=InverseRadioConverter}}"></RadioButton>

Parts of RadioHelper.cs

public class RadioHelper:IValueConverter 
    {
        public bool Inverse { get; set; }
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value != null)
            {
                bool boolValue = (bool)value;
                return this.Inverse ? !boolValue : boolValue;
            }
            return Binding.DoNothing;
       }
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            bool boolValue = (bool)value;
            if (!boolValue)
            {
                    return Binding.DoNothing;
            }
            return !this.Inverse;
        }
    }

Friday, August 12, 2016

Random Forest Regression, Negative Variance Explained mechanism

Be The First To Comment
Jeffery Evans, Senior Landscape Ecologist, The Nature Conservancy, Global Lands Science Team, Affiliate Assistant Professor, Zoology & Physiology, University of Wyoming explains a negative percent variance explained in a random forest regression in hilarious way -

I have recently been asked the question: “why do I receive a negative percent variance explained in a random forest regression”. Besides the obvious answer “because your model is crap” I thought that I would explain the mechanism at work here so the assumption is not that randomForests is producing erroneous results. For poorly supported models it is, in fact, possible to receive a negative percent variance explained.

Generally, explained variance (R²) is defined as:

R² = 1 - sum((ลท-mean(y))²) / sum((mean(y)-y)²)

However, as indicated by Breiman (2001) and the R randomForest documentation the (regression only) “pseudo R-squared” is derived as:

R² = 1 – (mean squared error) / var(y)

Which, mathematically can produce negative values. A simple interpretation of a negative R² (rsq), is that you are better off predicting any given sample as equal to overall estimated mean, indicating very poor model performance. 

Multi-item Selection WPF ListBox using Attached Property

Be The First To Comment
The attached property class looks like -
ListBoxHelper.cs
1:  public static class ListBoxHelper  
2:    {  
3:      public static readonly DependencyProperty SelectedItemsProperty =  
4:                          DependencyProperty.RegisterAttached("SelectedItems",   
5:                          typeof(IList),   
6:                          typeof(ListBoxHelper),   
7:                          new PropertyMetadata(default(List<string>),   
8:                          OnSelectedItemsChanged));  
9:        
10:      public static IList GetSelectedItems(DependencyObject d)  
11:      {  
12:        return (IList)d.GetValue(SelectedItemsProperty);  
13:      }  
14:    
15:      public static void SetSelectedItems(DependencyObject d, IList value)  
16:      {  
17:        d.SetValue(SelectedItemsProperty,value);  
18:      }  
19:    
20:      private static void OnSelectedItemsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)  
21:      {  
22:        var listBox = (ListBox)d;  
23:        ReSetSelectedItems(listBox);  
24:        listBox.SelectionChanged += delegate  
25:        {  
26:          ReSetSelectedItems(listBox);  
27:        };  
28:      }  
29:    
30:      private static void ReSetSelectedItems(ListBox listBox)  
31:      {  
32:        IList selectedItems = GetSelectedItems(listBox);  
33:        selectedItems.Clear();  
34:        if (listBox.SelectedItems != null)  
35:        {  
36:          foreach (var item in listBox.SelectedItems)  
37:            selectedItems.Add(item.ToString());  
38:        }  
39:      }  
40:    }  


Difference between PropertyMetadata vs FrameworkPropertyMetadata in .NET

Be The First To Comment

 

© 2011 GIS-Remote Sensing Tools, Tips, and Scripts ToS | Privacy Policy | Sitemap

About Me