如何在通用 Windows 平台中连接组合框和图像?

Posted

技术标签:

【中文标题】如何在通用 Windows 平台中连接组合框和图像?【英文标题】:How to connect Combo Box with Image in Universal Windows Platform? 【发布时间】:2021-12-24 12:25:38 【问题描述】:

我只是想将组合框连接到图像。这意味着当我在组合框中选择任何选项时,组合框会显示该选项的图像。请帮我知道如何做到这一点?

【问题讨论】:

【参考方案1】:

实现此行为的最简单方法是在 ComboBox.SelectedItem 更改时通过处理 ComboBox.SelectionChanged 事件来更改图像源。

这里有一个简单的演示它是如何工作的。首先,创建一个ComboBox 控件并为其提供一些有关位置的数据。然后在后面的代码中处理 ComboBox.SelectionChanged 事件 并获取选中项。现在您可以检查选定的值并更改图像的来源。

XAML:

 <Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <ComboBox x:Name="LocationComboBox" Header="Location" Height="60" Width="296" ItemsSource="x:Bind source" SelectionChanged="LocationComboBox_SelectionChanged">
        <ComboBox.ItemTemplate>
            <DataTemplate x:DataType="local:LocationData">
                <Grid>
                    <TextBlock Text="x:Bind location"/>
                </Grid>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>
    <Image x:Name="LocationImage" Grid.Row="1"/>
</Grid>

代码隐藏

 public sealed partial class MainPage : Page

    public List<LocationData> source  get; set; 
    public MainPage()
    
        this.InitializeComponent();

        source = new List<LocationData>();
        source.Add(new LocationData  location = "london" );
        source.Add(new LocationData  location = "paris" );
        source.Add(new LocationData  location = "seattle" );
        source.Add(new LocationData  location = "vancouver" );
        
    

    private void LocationComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    
        LocationData data = LocationComboBox.SelectedItem as LocationData;
        switch (data.location)
        
            case "london":
                LocationImage.Source = new BitmapImage(new Uri("ms-appx:///Assets/london.png"));
                break;
            case "paris":
                LocationImage.Source = new BitmapImage(new Uri("ms-appx:///Assets/paris.png"));
                break;
            case "seattle":
                LocationImage.Source = new BitmapImage(new Uri("ms-appx:///Assets/seattle.png"));
                break;
            case "Rvancouvered":
                LocationImage.Source = new BitmapImage(new Uri("ms-appx:///Assets/vancouver.png"));
                break;
        
    



public class LocationData

    public string location  get; set; 

您可以根据自己的需要进行更改。

【讨论】:

它对我的帮助更多,谢谢❤【参考方案2】:

对于连接组合框与图像,我按照这些步骤--

XAML:

 <Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <StackPanel Grid.Row="0">
        <ComboBox x:Name="imageViewer" Width="200" Header="Picture" PlaceholderText="LifePicture" SelectionChanged="imageViewer_SelectionChanged" SelectedItem="Binding Source, Mode=OneWay" >
            <x:String>America</x:String>
            <x:String>Bombey</x:String>
            <x:String>China</x:String>
            <x:String>Delhi</x:String>
        </ComboBox>
        <Image x:Name="PictureView" Height="150" Width="150"
           Margin="0,8,0,0" HorizontalAlignment="Left" />
       

    </StackPanel>
</Grid>

代码隐藏:

 private void imageViewer_SelectionChanged(object sender, SelectionChangedEventArgs e)
    
        string imageName = imageViewer.SelectedItem.ToString();
       
      
       if(imageName == "America")
        
            PictureView.Source = new BitmapImage(new Uri("ms-appx:///Assets/a.jpg"));
        
       else if (imageName == "Bombey")
        
            PictureView.Source = new BitmapImage(new Uri("ms-appx:///Assets/b.jpg"));
        
        else if (imageName == "China")
        
            PictureView.Source = new BitmapImage(new Uri("ms-appx:///Assets/c.jpg"));
        
        else if (imageName == "Delhi")
        
            PictureView.Source = new BitmapImage(new Uri("ms-appx:///Assets/d.jpg"));
        

    

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。 如果您已经解决了您的问题,请mark它被接受

以上是关于如何在通用 Windows 平台中连接组合框和图像?的主要内容,如果未能解决你的问题,请参考以下文章

颜色组合框和自定义颜色选择器

如何将数据源绑定到 datagridview 组合框和复选框

Microsoft Access VBA 2010 如何创建组合框和数组?

C#中Windows窗体工具栏

如何将组合框与文本框连接起来?

如何在 Qt 中向工具栏添加按钮/操作以外的控件,例如文本框和组合框?