ListBox 에 Color List 를 바인딩하고 선택한 Color 를 배경색으로 설정하는 방법입니다.
MainWindow.xaml
<Window x:Class="WPFTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPFTest"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
</Window>
MainWindow.xaml.cs
using System.Reflection;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Media;
namespace WPFTest
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Title = "List Color";
// 윈도우 Content를 위한 리스트 박스 생성
ListBox listbox = new ListBox();
listbox.Width = 150;
listbox.Height = 150;
Content = listbox;
// label 컨트롤로 리스트 박스를 채움
PropertyInfo[] props = typeof(Colors).GetProperties();
foreach (PropertyInfo prop in props)
{
Color color = (Color)prop.GetValue(null, null);
bool isBlack = .222 * color.R + .707 * color.G + .071 * color.B > 128;
Label label = new Label();
label.Content = prop.Name;
label.Background = new SolidColorBrush(color);
label.Foreground = isBlack ? Brushes.Black : Brushes.White;
label.Width = 100;
label.Margin = new Thickness(15, 0, 0, 0);
label.Tag = new SolidColorBrush(color);
listbox.Items.Add(label);
}
listbox.SelectedValuePath = nameof(Label.Tag);
listbox.SetBinding(ListBox.SelectedValueProperty, nameof(List.Background));
listbox.DataContext = this;
}
}
}
결과
WPF 프로그램 하단에 시계 표시하기 (0) | 2024.07.10 |
---|---|
WPF KeyGesture 사용해 키 이벤트 처리하기 (0) | 2024.07.10 |
WPF 디스크 사용량 표시하기 (0) | 2024.07.10 |
WPF 프로그램 비정상 종료 막기 (0) | 2024.07.10 |
WPF Panel 내의 모든 Button 에 동일 이벤트 적용하기 (0) | 2024.07.10 |