일반적으로이 사이트의 사용자는 질문 작성자가 귀하에게 더 많은 정보를 제공하는 것을 선호합니다. 우리는 또한 적어도 자신이 대답을 찾으려고 노력했음을보고 싶습니다.
그러나 새 사용자 인 경우 완전한 해결책을 제공 할 것입니다. 이를 달성하는 데는 여러 가지 방법이 있습니다 ... 나는 당신을 한 가지 방법으로 보여줄 것이고 당신의 요구에 맞출 수 있습니다.
은 당신의
MainWindow.xaml.cs
파일에 다음과 같은 새로운 WPF 프로젝트를 시작하고 추가
: 여기
using System;
using System.Collections.ObjectModel;
using System.Windows;
namespace WpfApplication1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = this;
Images.Add(new Tuple<string, string>("Picture 1",
"/WpfApplication1;component/Images/Picture 1.png"));
Images.Add(new Tuple<string, string>("Picture 2",
"/WpfApplication1;component/Images/Picture 2.png"));
Images.Add(new Tuple<string, string>("Picture 3",
"/WpfApplication1;component/Images/Picture 3.png"));
}
public static DependencyProperty ImagesProperty = DependencyProperty.Register(
"Images", typeof(ObservableCollection<Tuple<string, string>>), typeof(MainWindow),
new PropertyMetadata(new ObservableCollection<Tuple<string, string>>()));
public ObservableCollection<Tuple<string, string>> Images
{
get { return (ObservableCollection<Tuple<string, string>>)GetValue(
ImagesProperty); }
set { SetValue(ImagesProperty, value); }
}
}
}
나는 이미지 정보를 보유 Images
라는 DependencyProperty
만들었습니다. 그것은 형식이입니다. 그리고 이것은 각 그림의 파일 경로 인 과을 추가 할 수있게 해줍니다. 데이터베이스에 이미지가있는 시스템에이를 적용해야합니다. 이미지를 특정 폴더에 저장 한 다음 파일 경로를 참조하여 이미지 객체를 Image
컨트롤에로드하는 것보다 훨씬 쉽습니다.
다음
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="100" />
</Grid.RowDefinitions>
<Image Grid.Row="0" Source="{Binding SelectedValue,
ElementName=ImageComboBox}" />
<ComboBox Grid.Row="1" Name="ImageComboBox" ItemsSource="{Binding Images}"
DisplayMemberPath="Item1" SelectedValuePath="Item2" Height="23" Width="120" />
</Grid>
</Window>
나는 ComboBox.ItemsSource
속성에 Images
수집을 결합하고 Item1
에 DisplayMemberPath
속성을 설정 ...이 첫 번째 Tuple
의 이름입니다
다음으로, 당신의 MainWindow.xaml
파일에 다음 코드를 삽입 속성을 포함하고 있으므로 이름이 표시됩니다. 또한 SelectedValuePath
속성을 Item2
...으로 설정합니다. 이것은 그림 파일 경로를 보유하는 두 번째 Tuple
속성의 이름입니다. 따라서 선택한 항목의 값은 선택한 Image
의 파일 경로가됩니다.
또한 Image.Source
속성은 Binding SelectedValue, ElementName=ImageComboBox
으로 설정됩니다. 즉, 그림의 원본은 ComboBox.SelectedValue
에서 나옵니다. 기억해두면 선택한 이미지의 파일 경로로 설정됩니다.
유의할 것들 :
당신은 물론만큼 당신이 ComboBox.SelectedValuePath
과 ComboBox.DisplayMemberPath
속성에 사용할 올바른 속성의 이름을 업데이트 할 때 자신의 클래스와 Tuple
객체를 대체 할 수 있습니다.
또한이 예제 코드에서 사용하는 이미지를 응용 프로그램 루트 디렉토리에있는 Images
폴더에 추가하십시오. 또한 Picture 1.png
, Picture 2.png
및 Picture 3.png
이라고 지정하지 않으면 Images
컬렉션에 추가하는 파일 경로를 업데이트해야합니다.
프레이밍 된 것처럼 약 20 줄의 코드가 포함 된 IValueConverter와 함께 Xaml에서 완전히 수행 할 수 있습니다.가장 좋은 답변을 얻으려면 질문을 편집하여 콤보 상자를 채우는 데 사용 된 데이터 형식을 표시하고 선택 항목이 변경 될 때마다 db를 쿼리해야하는지 여부를 표시해야합니다. –
감사합니다. – user2631662