void volumeControl_muteStateChangedSink(RaumfeldNET.WPFControls.VolumeSliderControl _volumeSliderControl, bool _newValue)
        {
            Object objContext = this.getContextObjectFromDataContext(_volumeSliderControl.DataContext);

            if (objContext == null)
            {
                return;
            }
            this.setMuteForContext(objContext, _newValue);
        }
        void volumeControl_valueChangedTimeStepSink(RaumfeldNET.WPFControls.VolumeSliderControl _volumeSliderControl, uint _newValue)
        {
            Object objContext = this.getContextObjectFromDataContext(_volumeSliderControl.DataContext);

            if (objContext == null)
            {
                return;
            }
            this.setVolumeForContext(objContext, _newValue);
        }
        // creates the volume controls in a Stack panel
        protected void createAndInitVolumeControls(String _zoneUDN)
        {
            Room roomInformation;
            Zone zone = rfController.zoneManager.getZone(_zoneUDN);
            RaumfeldNET.WPFControls.VolumeSliderControl volumeControl = new RaumfeldNET.WPFControls.VolumeSliderControl();

            if (_zoneUDN != currentSelectedZoneUDN)
                return;

            if (zone.getRenderer() != null)
            {
                ZoneMainVolumeControl.IsMute = zone.getRenderer().isMuted;
                ZoneMainVolumeControl.Value = zone.getRenderer().currentVolume;

                MainVolumeRotaryControl.IsMute = zone.getRenderer().isMuted;
                MainVolumeRotaryControl.Value = zone.getRenderer().currentVolume;
            }
            ZoneMainVolumeControl.DataContext = new Object[2] { typeof(Zone), _zoneUDN };
            ZoneMainVolumeControl.valueChangedTimeStep += volumeControl_valueChangedTimeStepSink;
            ZoneMainVolumeControl.muteStateChanged += volumeControl_muteStateChangedSink;

            MainVolumeRotaryControl.DataContext = new Object[2] { typeof(Zone), _zoneUDN };
            MainVolumeRotaryControl.valueChangedTimeStep += volumeRotaryControl_valueChangedTimeStepSink;
            MainVolumeRotaryControl.muteStateChanged += volumeRotaryControl_muteStateChangedSink;
            MainVolumeRotaryControl.SliderText = "Master";

            ZoneVolumePopupRendererStackPanel.Children.Clear();

            /*
            volumeControl.DataContext = new Object[2] { typeof(Zone), _zoneUDN};
            //volumeControl.Width = SelectedZoneVolumeSlider.ActualWidth;
            //volumeControl.Width = 300;
            if (volumeControl.Width < volumeControl.MinWidth)
                volumeControl.Width = volumeControl.MinWidth;
            volumeControl.valueChangedTimeStep += volumeControl_valueChangedTimeStepSink;
            volumeControl.muteStateChanged += volumeControl_muteStateChangedSink;
            volumeControl.SliderText = "Master";

            ZoneVolumePopupRendererStackPanel.Children.Add(volumeControl);*/

            // create for rooms (if more than one room exists)
            List<String> roomUDNs = rfController.zoneManager.getLinkedRooms(_zoneUDN);
            if (roomUDNs.Count() > 1)
            {
                for (int i = 0; i < roomUDNs.Count(); i++)
                {
                    // create for room renderer
                    roomInformation = rfController.zoneManager.getRoom(roomUDNs[i]);

                    volumeControl = new RaumfeldNET.WPFControls.VolumeSliderControl();
                    volumeControl.DataContext = new Object[2] { typeof(Room), roomInformation.udn};
                    volumeControl.Color = (Color)ColorConverter.ConvertFromString(roomInformation.color);
                    //volumeControl.Width = SelectedZoneVolumeSlider.ActualWidth;
                    //volumeControl.Width = 300;
                    if (volumeControl.Width < volumeControl.MinWidth)
                        volumeControl.Width = volumeControl.MinWidth;
                    volumeControl.valueChangedTimeStep += volumeControl_valueChangedTimeStepSink;
                    volumeControl.muteStateChanged += volumeControl_muteStateChangedSink;
                    volumeControl.SliderText = roomInformation.name;

                    ZoneVolumePopupRendererStackPanel.Children.Add(volumeControl);
                }
            }

            this.updateVolumeControlValues(_zoneUDN);
        }
        // creates the volume controls in a Stack panel
        protected void createAndInitVolumeControls(String _zoneUDN)
        {
            Room roomInformation;
            Zone zone = rfController.zoneManager.getZone(_zoneUDN);

            RaumfeldNET.WPFControls.VolumeSliderControl volumeControl = new RaumfeldNET.WPFControls.VolumeSliderControl();

            if (_zoneUDN != currentSelectedZoneUDN)
            {
                return;
            }

            if (zone.getRenderer() != null)
            {
                ZoneMainVolumeControl.IsMute = zone.getRenderer().isMuted;
                ZoneMainVolumeControl.Value  = zone.getRenderer().currentVolume;

                MainVolumeRotaryControl.IsMute = zone.getRenderer().isMuted;
                MainVolumeRotaryControl.Value  = zone.getRenderer().currentVolume;
            }
            ZoneMainVolumeControl.DataContext = new Object[2] {
                typeof(Zone), _zoneUDN
            };
            ZoneMainVolumeControl.valueChangedTimeStep += volumeControl_valueChangedTimeStepSink;
            ZoneMainVolumeControl.muteStateChanged     += volumeControl_muteStateChangedSink;

            MainVolumeRotaryControl.DataContext = new Object[2] {
                typeof(Zone), _zoneUDN
            };
            MainVolumeRotaryControl.valueChangedTimeStep += volumeRotaryControl_valueChangedTimeStepSink;
            MainVolumeRotaryControl.muteStateChanged     += volumeRotaryControl_muteStateChangedSink;
            MainVolumeRotaryControl.SliderText            = "Master";

            ZoneVolumePopupRendererStackPanel.Children.Clear();

            /*
             * volumeControl.DataContext = new Object[2] { typeof(Zone), _zoneUDN};
             * //volumeControl.Width = SelectedZoneVolumeSlider.ActualWidth;
             * //volumeControl.Width = 300;
             * if (volumeControl.Width < volumeControl.MinWidth)
             *  volumeControl.Width = volumeControl.MinWidth;
             * volumeControl.valueChangedTimeStep += volumeControl_valueChangedTimeStepSink;
             * volumeControl.muteStateChanged += volumeControl_muteStateChangedSink;
             * volumeControl.SliderText = "Master";
             *
             * ZoneVolumePopupRendererStackPanel.Children.Add(volumeControl);*/

            // create for rooms (if more than one room exists)
            List <String> roomUDNs = rfController.zoneManager.getLinkedRooms(_zoneUDN);

            if (roomUDNs.Count() > 1)
            {
                for (int i = 0; i < roomUDNs.Count(); i++)
                {
                    // create for room renderer
                    roomInformation = rfController.zoneManager.getRoom(roomUDNs[i]);

                    volumeControl             = new RaumfeldNET.WPFControls.VolumeSliderControl();
                    volumeControl.DataContext = new Object[2] {
                        typeof(Room), roomInformation.udn
                    };
                    volumeControl.Color = (Color)ColorConverter.ConvertFromString(roomInformation.color);
                    //volumeControl.Width = SelectedZoneVolumeSlider.ActualWidth;
                    //volumeControl.Width = 300;
                    if (volumeControl.Width < volumeControl.MinWidth)
                    {
                        volumeControl.Width = volumeControl.MinWidth;
                    }
                    volumeControl.valueChangedTimeStep += volumeControl_valueChangedTimeStepSink;
                    volumeControl.muteStateChanged     += volumeControl_muteStateChangedSink;
                    volumeControl.SliderText            = roomInformation.name;

                    ZoneVolumePopupRendererStackPanel.Children.Add(volumeControl);
                }
            }

            this.updateVolumeControlValues(_zoneUDN);
        }