venerdì 4 aprile 2014

Developer Conference 2014

It's a great conference dedicated to .NET developers, for developing client and web applications, Windows Phone and Windows 8.x apps.

http://www.developerconference.it/events/2014/default.aspx

mercoledì 19 marzo 2014

LINQ to entities - Error occured update the entries

C# .NET Framework 4.0, Linq to entities

I have an application that uses Linq to entities for accessing to a SQL Server 2008 database, naturally this application works fine. Therefore, I deploy it in a system where there is SQL 2005 express and not SQL Server 2008 and my application gives the follow exception:

Message: An error occurred while updating the entries. See the inner exception for details.

The solution is:

  • Open the entity data model, for example Model.edmx, with a XML Editor.
  • Change the attribute ProviderManifestToken (Schema element -> <Schema)
          from
      ProviderManifestToken="2008"
      to
      ProviderManifestToken="2005"
  • Rebuild and re-deploy the assembly.

It works fine for me.

venerdì 7 febbraio 2014

WorkShop Android a Chioggia

Ciao a tutti, un'iniziativa interessante per chi vuol muovere i primi passi con Android.

Se siete interessati ecco il link: http://goo.gl/SDV354

giovedì 30 gennaio 2014

Community Days 2014

Organized by Italian community and user group devoted to Microsoft products and technologies, to offer study days in the form of technical conferences.


 Community Days 2014

martedì 14 gennaio 2014

Calling a WCF service through a proxy server.

C# .NET Framework 4.0

I have an application client that calls a WCF service and in this client uses a proxy for the internet connection, so when I call my service I must first provide the proxy authentication.
I have created a class that implements the IWebProxy interface:

namespace Utililty {
   public class ProxyConfig : IWebProxy {

        public ICredentials Credentials {
            get
            {
                using (var context = new AOEntities())
                {
                    var query =
                        from data in context.ConnectionParameters
                        where data.ServerName.Equals("Proxy")
                        select data;

                    if (query.Any())
                    {
                        var parameters = query.FirstOrDefault();
                        if (parameters != null) return new NetworkCredential(parameters.UserName, parameters.Password);
                    }

                    return null;
                }               
            }
            set { }
        }

        public Uri GetProxy(Uri destination) {
            return WebRequest.GetSystemWebProxy().GetProxy(destination);
        }

        public bool IsBypassed(Uri host) {
            return WebRequest.GetSystemWebProxy().IsBypassed(host);
        }       
    }
}

In this example, I retrieve the credentials from a SQL Server database, but if you prefer you can put in the application configuration file.

Then in the application configuration file (app.config), I have added this section:

 <system.net>
   <defaultProxy>
     <module type=" Utililty.ProxyConfig, Utililty"/>
   </defaultProxy>
 </system.net>

and the attribute useDefaultWebProxy="trueat the WCF binding configuration.

The ProxyConfig object will have call automatically before your call to service.

Peace & Love!

martedì 17 dicembre 2013

Merge several TIFF images to single multipage TIFF

C# .NET Framework 4.0

In my application, I have wanted to merge and compress several TIFF images to single multipage TIFF, for this purpose I used the framework Bitmap object with EncoderParameters like explained in this link http://stackoverflow.com/questions/3478292/whats-the-recommended-tiff-compression-for-color-photos/3480411#3480411 . Unfortunately, this solution was very slow! 3’:20’’ for merging of 1420 images.


So I searched in the web and I found this awesome solution http://bitmiracle.com/libtiff/help/merge-several-tiff-images-to-single-multipage-tiff.aspx : the time for merging images has dropped to 26’’! 

That’s miracle!

giovedì 28 novembre 2013

WPF (MVVM) - Retrieve the Listbox SelectedItems property

C# .NET Framework 4.0 MVVM Light Toolkit

In my WPF (MVVM) application, I want to use the Listbox SelectedItems property but this property has no setter and for this reason it’s not “bindable“ to my view model.
I have tried to use the property (IsSelected) in my object and in the XAML this item container style.

<ListBox.ItemContainerStyle>
        <Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
        </Style>
</ListBox.ItemContainerStyle>

This solution works fine if the Listbox SelectionMode property is set to Single but if the selection mode is “Extended” (SelectionMode="Extended") it doesn’t work correctly, sometimes a few items remain selected.
Finally, I found a solution that works for me. I use the MenuItem’s CommandParameter for accessing to the Listbox SelectedItems property.

Like this.

<ListBox.ContextMenu>
<ContextMenu>
                    <MenuItem Command="{Binding AddImagesSelectedCommand}" CommandParameter="{Binding PlacementTarget.SelectedItems, RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}}" Header="{Binding Source={StaticResource CustomResources}, Path=LocalizedStrings.mnuAddImagesSelected}" />
</ContextMenu>
</ListBox.ContextMenu> 

Then in the view model:

AddImagesSelectedCommand = new RelayCommand<object>(OnAddImagesSelected, CanAddImagesSelected);

private void OnAddImagesSelected(object param)
        {
            var selectedImages = ((IEnumerable)param).Cast<CaptureImage>().ToList();

     //To do something …           
        }   

private bool CanAddImagesSelected(object param)
        {
            if (param != null)
            {
                var selectedImages = ((IEnumerable) param).Cast<CaptureImage>().ToList();

                return (selectedImages != null && selectedImages.Count > 0);
            }
            return false;
        }

We must use the PlacementTarget object because the ContextMenu is not in the same part of the Visual Tree, so that is why you cannot use ElementName etc. to reference the ListBox.


See you soon for the next trick!