½½¶óÀÌ´õ´Â ¹üÀ§ ³»ÀÇ °ªÀ» º¸¿©Áֱ⵵ ÇÏ°í ÇÁ·Î±×·¡½º ¹Ù¿Í´Â ´Þ¸® »ç¿ëÀÚ°¡ ½æÀ» µå·¡±×Çϰųª Æ®·¢À» ÅÇÇÏ¿© °ªÀ» º¯°æÇÒ ¼öµµ ÀÖ´Ù. ¹üÀ§ÀÇ ÃʱⰪÀº 0~10À¸·Î ¼³Á¤µÇ¾î ÀÖ´Ù. Orientation ¼Ó¼ºÀ¸·Î ½½¶óÀÌ´õÀÇ ¹æÇâÀ» °áÁ¤Çϴµ¥ µðÆúÆ®´Â ¼öÆòÀÌ´Ù. ¼öÆò ½½¶óÀÌ´õ´Â ¿À¸¥ÂÊÀ¸·Î µå·¡±×ÇÒ ¶§ °ªÀÌ Áõ°¡ÇÏ¸ç ¼öÁ÷ ½½¶óÀÌ´õ´Â À§ÂÊÀ¸·Î µå·¡±×ÇÒ ¶§ Áõ°¡ÇÑ´Ù. isDirectionReversed ¼Ó¼ºÀ» true·Î ¼³Á¤Çϸé Áõ°¡ ¹æÇâÀÌ ¹Ý´ë°¡ µÇ´Âµ¥ Á÷°üÀûÀÌÁö ¸øÇϹǷΠ»ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ÁÁ´Ù.
»ç¿ëÀÚ°¡ ½½¶óÀÌ´õ¸¦ Á¶ÀÛÇÏ¿© °ªÀ» º¯°æÇϸé ValueChanged À̺¥Æ®°¡ ¹ß»ýÇÑ´Ù. À̺¥Æ®ÀÇ Àμö·Î RoutedPropertyChangedEventArgs<double> ŸÀÔÀÇ °´Ã¼°¡ Àü´ÞµÇ¸ç ÀÌ °´Ã¼ÀÇ NewValue, OldValue ¼Ó¼ºÀ» ÅëÇØ º¯°æ ÀüÈÄÀÇ °ªÀ» ¾Ë ¼ö ÀÖ´Ù. °ªÀÌ º¯°æµÉ ¶§ Áï½Ã Àû¿ëÇÏ·Á¸é ValueChanged À̺¥Æ® Çڵ鷯¿¡¼ NewValue°ªÀ» »ç¿ëÇÏ¸é µÈ´Ù. ´ÙÀ½ ¿¹Á¦´Â ¼öÆò, ¼öÁ÷ ¾ç¹æÇâÀ¸·Î µÎ °³ÀÇ ½½¶óÀÌ´õ¸¦ ¹èÄ¡ÇÏ°í ½½¶óÀÌ´õÀÇ ÇöÀç°ªÀ» ÅؽºÆ® ºí·Ï¿¡ Ãâ·ÂÇÑ´Ù.
Slider
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<StackPanel>
<Slider Name="horzSlider" Margin="20"
ValueChanged="horzSlider_ValueChanged" />
<TextBlock Name="horzValue" Text="0" FontSize="50"/>
<Slider Name="vertSlider" Margin="20" Height="200"
Orientation="Vertical" ValueChanged="vertSlider_ValueChanged" />
<TextBlock Name="vertValue" Text="0" FontSize="50"/>
</StackPanel>
</Grid>
================================== CS =======================================
private void horzSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
horzValue.Text = e.NewValue.ToString();
}
private void vertSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
vertValue.Text = e.NewValue.ToString();
}
½½¶óÀÌ´õ´Â ÅÇÀ̳ª µå·¡±× µîÀÇ ÅÍÄ¡ µ¿ÀÛÀ¸·Î °ªÀ» Á¶Á¤ÇϹǷΠÅÍÄ¡ ¿µ¿ªÀÌ »ó´çÈ÷ ³Ð°Ô ¼³Á¤µÇ¾î ÀÖ´Ù. ½½¶óÀÌ´õÀÇ ÀÓÀÇ ¿µ¿ªÀ» ÅÍÄ¡ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ½½¶óÀÌ´õ ±Ùó¿¡´Â ÅÍÄ¡¸¦ ÀԷ¹޴ ´Ù¸¥ ÄÁÆ®·ÑÀ» µÎÁö ¾Ê´Â °ÍÀÌ ÁÁ´Ù. ºÎµæÀÌÇÏ°Ô ÅÍÄ¡ ÀÔ·Â ÄÁÆ®·ÑÀ» ÀÎÁ¢ÇÏ°Ô ¹èÄ¡ÇØ¾ß ÇÑ´Ù¸é À§ ¿¹Á¦Ã³·³ Àû´çÈ÷ ¸¶ÁøÀ» ÁÖ¾î °£°ÝÀ» ¶ç¿ö¾ß ÇÑ´Ù. ¸¶ÁøÀÌ ÀüÇô ¾øÀ¸¸é ½æÀÌ È¸é °¡ÀåÀÚ¸®¿¡ ¹ÐÂøÇϹǷΠ¼Õ°¡¶ôÀ¸·Î µå·¡±×Çϱ⠰ï¶õÇÏ´Ù.
½æ ¾Õ µÚÀÇ Æ®·¢À» Ŭ¸¯Çϸé 1¾¿ °ªÀÌ Áõ°¨µÇ¸ç ½æÀ» µå·¡±×Çϸé ÀÓÀÇÀÇ °ªÀ¸·Î Á¶Á¤µÈ´Ù. ½æÀ» µå·¡±×ÇÒ ¶§´Â ²À Èò»ö ½æÀ» Á¤È®ÇÏ°Ô ´©¸¦ ÇÊ¿ä¾øÀÌ ÁÖº¯À» ´ëÃæ ´·¯µµ Àß µå·¡±×µÈ´Ù. ½æ ÁÖº¯¿¡ ÅÍÄ¡¸¦ ¹Þ¾Æ µéÀÌ´Â Åõ¸íÇÑ ¿µ¿ªÀÌ Àֱ⠶§¹®ÀÌ´Ù. Æ®·¢Àº RepeatButtonÀ¸·Î ±¸ÇöµÇ¾î ÀÖÀ¸¹Ç·Î ´©¸¥ ä·Î °¡¸¸È÷ ÀÖÀ¸¸é °ªÀÌ °è¼Ó Áõ°¨µÈ´Ù.
µå·¡±×ÇÒ ¶§ Value´Â Á¤¹Ðµµ°¡ ³ôÀº ½Ç¼ö°ªÀ¸·Î º¯°æµÇ´Âµ¥ Á¤È®µµ°¡ ±»ÀÌ ÇÊ¿äÄ¡ ¾Ê´Ù¸é Á¤¼ö·Î ij½ºÆÃÇϰųª Àû´çÇÑ ÀÚ¸®¿¡¼ ¹Ý¿Ã¸²ÇÏ¿© »ç¿ëÇÏ¸é µÈ´Ù. ValueChanged À̺¥Æ® Çڵ鷯¿¡¼ À̺¥Æ® ÀμöÀÇ NewValue ¼Ó¼ºÀ¸·Î »õ °ªÀ» Á¶»çÇÒ ¼öµµ ÀÖ°í horzSlider.Value ó·³ °´Ã¼ÀÇ °ªÀ» ¹Ù·Î ÂüÁ¶Çصµ »ó°ü¾ø´Ù.
½½¶óÀÌ´õ´Â ³ÐÀº ¹üÀ§ÀÇ ¿¬¼ÓÀûÀÎ °ªÀ» ½Å¼ÓÇÏ°Ô ¼±ÅÃÇÏ´Â ¿ëµµ·Î ÀûÇÕÇÏ´Ù. º¼·ýÀ̳ª ¹à±â, ¿Âµµ µî Á¤È®µµº¸´Ù´Â ´ëÃæÀÇ °ªÀÌ ÇÊ¿äÇÑ °æ¿ì °ªÀ» ºü¸£°Ô Á¶Á¤ÇÒ ¼ö ÀÖ´Ù. ¼Õ°¡¶ôÀ¸·Î ½æÀ» µå·¡±×ÇÏ´Â µ¿ÀÛÀº Á¤È®µµ°¡ ¶³¾îÁö¹Ç·Î °³¼ö³ª °¡°Ý µî Á¤¹Ð¼ºÀ» ¿ä±¸ÇÏ´Â °ª ÀԷ¿¡´Â ÀûÇÕÇÏÁö ¾Ê´Ù. ÀÌ·± °ªÀº ÅؽºÆ® ¹Ú½º·Î ¼öÄ¡°ªÀ» ÀԷ¹޴ °ÍÀÌ ÇÕ¸®ÀûÀÌ´Ù.
½½¶óÀÌ´õ ÀÚü´Â ÇöÀçÀÇ °ªÀ» Á¤È®ÇÏ°Ô º¸¿©ÁÖ´Â ±â´ÉÀÌ ¾øÀ¸¸ç ½æÀÇ À§Ä¡·Î ´ëÃæ ÆǺ°ÇØ¾ß ÇÑ´Ù. Á¤È®ÇÑ °ªÀ» »ç¿ëÀÚ¿¡°Ô º¸¿©ÁÖ·Á¸é À§ ¿¹Á¦Ã³·³ ÅؽºÆ® ºí·ÏÀ» ¹èÄ¡ÇÏ°í °ªÀÌ º¯°æµÉ ¶§¸¶´Ù ÅؽºÆ® ºí·Ï¿¡ °ªÀ» Ãâ·ÂÇÑ´Ù. ÇöÀç°ªÀ» º¸¿©Áֱ⸸ ÇϹǷΠÅؽºÆ® ºí·ÏÀÌ °¡Àå ÀÌ»óÀûÀÌÁö¸¸ Å°º¸µå ÀԷµµ °âÇؼ ¹ÞÀ¸·Á¸é ÅؽºÆ® ¹Ú½ºµµ ¹«¹æÇÏ´Ù.
½½¶óÀÌ´õ´Â À½¾ÇÀ̳ª µ¿¿µ»óÀÇ Àç»ý À§Ä¡¸¦ Ç¥½ÃÇÏ´Â ¿ëµµ·Îµµ »ç¿ëµÈ´Ù. ÃÑ Àç»ý ºÐ·®¸¸Å ¹üÀ§¸¦ ÁöÁ¤ÇÏ°í Àç»ýÀÌ ÁøÇàµÉ ¶§ ½½¶óÀÌ´õ¿¡ ÇöÀç À§Ä¡¸¦ º¸¿©ÁÖ¸ç »ç¿ëÀÚ°¡ ½½¶óÀÌ´õ¸¦ Á¶ÀÛÇϸé ÀÓÀÇ À§Ä¡·Î À̵¿ÇÑ´Ù. ÀÌ·² ¶§´Â ValueChanged À̺¥Æ®º¸´Ù´Â µå·¡±×¸¦ ³¡³»°í ¼Õ°¡¶ôÀ» ³õ´Â ½ÃÁ¡¿¡ ¹ß»ýÇÏ´Â LostMouseCapture À̺¥Æ®¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù. ´ÙÀ½ ¿¹Á¦·Î Â÷ÀÌÁ¡À» ºñ±³ÇØ º¸ÀÚ.
SliderDrag
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<StackPanel>
<TextBlock Name="txtPos1" Text="0" FontSize="50"/>
<Slider Name="Slider1" Margin="20" Maximum="10000" LargeChange="10"
ValueChanged="Slider1_ValueChanged" />
<TextBlock Name="txtPos2" Text="0" FontSize="50"/>
<Slider Name="Slider2" Margin="20" Maximum="10000" LargeChange="10"
LostMouseCapture="Slider2_LostMouseCapture" />
</StackPanel>
</Grid>
================================== CS =======================================
private void Slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
txtPos1.Text = Slider1.Value.ToString("0.00");
}
private void Slider2_LostMouseCapture(object sender, MouseEventArgs e)
{
txtPos2.Text = Slider2.Value.ToString("0.00");
}
ÅؽºÆ® ºí·Ï°ú ½½¶óÀÌ´õ¸¦ µÎ½Ö ¹èÄ¡Çß´Ù. ÅؽºÆ® ºí·ÏÀº µ¿¿µ»ó Àç»ý À§Ä¡¸¦ º¸¿©ÁØ´Ù°í °¡Á¤ÇÏÀÚ. Àç»ý À§Ä¡¸¦ ½Å¼ÓÇÏ°Ô Á¶Á¤Çϱâ À§ÇØ ½æÀ» Ŭ¸¯ÇÒ ¶§ 10¸¸Å¾¿ Áõ°¨Çϵµ·Ï ÇßÀ¸¸ç ³Ê¹« ±ä ½Ç¼ö¸¦ º¸¿©ÁÙ ÇÊ¿ä´Â ¾øÀ¸¹Ç·Î ¼Ò¼öÁ¡ µÎÀÚ¸®±îÁö ¹Ý¿Ã¸²ÇÏ¿© À߶ó¼ Ãâ·ÂÇÑ´Ù. À§ÂÊÀº ValueChanged À̺¥Æ®¸¦ »ç¿ëÇÏ¿´°í ¾Æ·¡ÂÊÀº LostMouseCapture À̺¥Æ®¸¦ »ç¿ëÇÏ¿´´Ù.
ÅÇÀ» ÇÏ°Ç µå·¡±×¸¦ ÇÏ°Ç µÎ °æ¿ì ¸ðµÎ °ªÀÌ ¹Ù²î´Â °ÍÀº ¸¶Âù°¡ÁöÀÌ´Ù. ±×·¯³ª À§ÂÊÀº µå·¡±×Áß¿¡µµ °ªÀÌ ¹Ù²îÁö¸¸ ¾Æ·¡ÂÊÀº µå·¡±×Áß¿¡´Â ¹Ù²îÁö ¾Ê°í µå·ÓÇÒ ¶§ ¹Ù²ï´Ù. µ¿¿µ»óÀ̳ª À½¾ÇÀÇ Àç»ý À§Ä¡¸¦ º¯°æÇÏ´Â °ÍÀº »ó´çÇÑ ½Ã°£À» ¿ä±¸Çϴµ¥ µå·¡±×ÇÏ´Â Á·Á· »õ À§Ä¡¸¦ ã¾Æ °¡´Â °ÍÀº ¸ð¹ÙÀÏ ÀåºñÀÇ ´É·ÂÄ¡¸¦ ¿À¹öÇÏ´Â Èûµç ÀÛ¾÷ÀÌ´Ù.
½ÉÁö¾î ±× °·ÂÇÑ µ¥½ºÅ©Å¾¿¡¼µµ µ¿¿µ»ó Àç»ý À§Ä¡´Â µå·¡±×ÇÏ´Â Á·Á· ¹Ù²îÁö ¾Ê°í ¶ç¾ö ¶ç¾ö ¹Ù²ï´Ù. »ç½Ç µå·¡±×Áß¿¡ Àç»ý À§Ä¡¸¦ ÀÏÀÏÀÌ ¹Ù²Ü ÇÊ¿äµµ ¾ø°í ±×·¡ºÃÀÚ ¿µ»óÀÌ Á¦´ë·Î º¸ÀÌÁöµµ ¾Ê´Â´Ù. ÀÌ·± ÀÛ¾÷Àº °¡±ÞÀûÀÌ¸é ¼öÇà Ƚ¼ö¸¦ ÃÖ¼ÒÈÇÏ´Â °ÍÀÌ ÁÁÀ¸¸é ÀÌ ¿ä±¸¿¡ ºÎÇÕÇÏ´Â À̺¥Æ®°¡ ¹Ù·Î LostMouseCaptureÀÌ´Ù.