Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在运行时从选定的列表框项将图像源设置为空白图像控件?_C#_.net_Wpf_Silverlight - Fatal编程技术网

C# 如何在运行时从选定的列表框项将图像源设置为空白图像控件?

C# 如何在运行时从选定的列表框项将图像源设置为空白图像控件?,c#,.net,wpf,silverlight,C#,.net,Wpf,Silverlight,问题: 我有一个名为“Image1”的空白图像控件 现在,我想在运行时根据我的ListBox(ListBoxSource)上的选定项为该图像提供一个源 在“ListBoxSource\u SelectionChanged(…)”事件中,我将如何做到这一点 注意:我知道如何使用绑定执行此操作,但我只知道使用另一个列表框来显示我选择的项目。这次我使用了一个网格(2行2列:每个单元格中都有一个空白图像控件),以便为每个网格单元格提供ListBoxSource选定的图像项 或我可以使用网格对此进行一些绑

问题:

我有一个名为“Image1”的空白图像控件

现在,我想在运行时根据我的ListBox(ListBoxSource)上的选定项为该图像提供一个源

在“ListBoxSource\u SelectionChanged(…)”事件中,我将如何做到这一点

注意:我知道如何使用绑定执行此操作,但我只知道使用另一个列表框来显示我选择的项目。这次我使用了一个网格(2行2列:每个单元格中都有一个空白图像控件),以便为每个网格单元格提供ListBoxSource选定的图像项

我可以使用网格对此进行一些绑定吗?我的另一个目的是能够控制不同大小的图像(这意味着一些图像将跨越网格中的行/列)

这是我的XAML:

 <Window.Resources>
    <DataTemplate x:Key="ItemTemplate">
        <StackPanel>
            <Image Source="{Binding FileFullName}" HorizontalAlignment="Left" Height="64" Width="64"/>
            <TextBlock Text="{Binding FileName}"/>
        </StackPanel>
    </DataTemplate>
</Window.Resources>

<Grid x:Name="LayoutRoot" DataContext="{Binding Source={StaticResource SampleDataSource}}">
    <ListBox x:Name="ListBoxSource" HorizontalAlignment="Left" ItemTemplate="{DynamicResource ItemTemplate}" ItemsSource="{Binding Collection}" Margin="29,31,0,31" Width="257" SelectionMode="Multiple" SelectionChanged="listBoxSource_SelectionChanged"/>
    <Grid x:Name="GridImageHolder" Height="270" Margin="338,44,0,0" VerticalAlignment="Top" Background="#FFE0D6D6" ShowGridLines="True" DataContext="{Binding SelectedItem, ElementName=listBoxSource}" d:DataContext="{Binding Collection[0]}" HorizontalAlignment="Left" Width="539">
        <Grid.RowDefinitions>
            <RowDefinition Height="130"/>
            <RowDefinition Height="140"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="267.883"/>
            <ColumnDefinition Width="271.117"/>
        </Grid.ColumnDefinitions>
        <Image x:Name="Image1" Grid.Row="0" Grid.Column="0" Margin="8,0.96,21.883,8"/>
        <Image x:Name="Image2" Grid.Row="0" Grid.Column="1" HorizontalAlignment="Left" Margin="19.975,0,0,8" Width="218"/>
        <Image x:Name="Image3" Grid.Row="1" Grid.Column="0" Margin="8,21.04,40.883,16"/>
        <Image x:Name="Image4" Grid.Row="1" Grid.Column="1" Margin="8,21.04,33.117,16" />

    </Grid>

</Grid>


如果您需要将发送者强制转换为相应的类。

您可以查看键入e。点击CTRL+空格键,查看在设计模式下可以获得哪些属性,您想要该ImageControl或ImageControl的SelectedIndex名称是什么意思?你说的是智能感知吗?对不起,我只知道如何做一些绑定..但至于编码,我有点不擅长。。做一些绑定,…创建XAML,.etc Visual Studio为我做的。您仍然需要使用一些事件背后的代码。。你在Google中搜索过XAML事件吗?是的,我知道。这就是为什么我试图深入挖掘而不是依赖IDE。另外。我做了很多研究(stackoverflow,Google…等等)但有些是高级主题。这次我唯一关心的是从列表框SelectedItem/SelectedValue甚至SelectedIndex中提供我的图像源,但总是出现错误。主要是“无法隐式转换此类型..等…”。显示您尝试转换发件人的代码。谢谢。。但我仍在考虑是否可以使用网格进行绑定和数据模板。。我只是想尝试一些不同的东西,我可以做一些自定义大小的个人图像显示,而不是使用模板来显示相同的大小,布局…等等。。但是当然,数据来自的列表框的项被绑定到一个集合中。我只想在选择项的过程中以不同的方式显示它。。。但这是否可以绑定并实现我希望使用Grid实现的相同功能?您可以绑定到XAML中的(UI)元素,并在XAML路径中引用SelectedItem.Property。在绑定元素上搜索MSDN
 <Window.Resources>
    <DataTemplate x:Key="ItemTemplate">
        <StackPanel>
            <Image Source="{Binding FileFullName}" HorizontalAlignment="Left" Height="64" Width="64"/>
            <TextBlock Text="{Binding FileName}"/>
        </StackPanel>
    </DataTemplate>
</Window.Resources>

<Grid x:Name="LayoutRoot" DataContext="{Binding Source={StaticResource SampleDataSource}}">
    <ListBox x:Name="ListBoxSource" HorizontalAlignment="Left" ItemTemplate="{DynamicResource ItemTemplate}" ItemsSource="{Binding Collection}" Margin="29,31,0,31" Width="257" SelectionMode="Multiple" SelectionChanged="listBoxSource_SelectionChanged"/>
    <Grid x:Name="GridImageHolder" Height="270" Margin="338,44,0,0" VerticalAlignment="Top" Background="#FFE0D6D6" ShowGridLines="True" DataContext="{Binding SelectedItem, ElementName=listBoxSource}" d:DataContext="{Binding Collection[0]}" HorizontalAlignment="Left" Width="539">
        <Grid.RowDefinitions>
            <RowDefinition Height="130"/>
            <RowDefinition Height="140"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="267.883"/>
            <ColumnDefinition Width="271.117"/>
        </Grid.ColumnDefinitions>
        <Image x:Name="Image1" Grid.Row="0" Grid.Column="0" Margin="8,0.96,21.883,8"/>
        <Image x:Name="Image2" Grid.Row="0" Grid.Column="1" HorizontalAlignment="Left" Margin="19.975,0,0,8" Width="218"/>
        <Image x:Name="Image3" Grid.Row="1" Grid.Column="0" Margin="8,21.04,40.883,16"/>
        <Image x:Name="Image4" Grid.Row="1" Grid.Column="1" Margin="8,21.04,33.117,16" />

    </Grid>

</Grid>