Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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# 访问ListboxItem中的控件_C#_Wpf_Listbox_Controls_Listboxitem - Fatal编程技术网

C# 访问ListboxItem中的控件

C# 访问ListboxItem中的控件,c#,wpf,listbox,controls,listboxitem,C#,Wpf,Listbox,Controls,Listboxitem,我有一个列表框。此列表框具有自定义控件。例如,图像、文本块等。最初文本块折叠,图像可见。我想让文本块在用户使用鼠标输入时可见,并更改该项目中图像的不透明度。但我无法访问listboxitems控件。我给他们起了名字,但他们没有出现。我怎样才能做到这一点?我的列表框XAML代码: <ListBox SelectionChanged="MoviesDisplay_OnSelectionChanged" ScrollViewer.HorizontalScrollBarVisibility="Di

我有一个列表框。此列表框具有自定义控件。例如,图像、文本块等。最初文本块折叠,图像可见。我想让文本块在用户使用鼠标输入时可见,并更改该项目中图像的不透明度。但我无法访问listboxitems控件。我给他们起了名字,但他们没有出现。我怎样才能做到这一点?我的列表框XAML代码:

<ListBox SelectionChanged="MoviesDisplay_OnSelectionChanged" ScrollViewer.HorizontalScrollBarVisibility="Disabled" Background="Black" x:Name="MoviesDisplay">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid  x:Name="MoviesGrid"  Height="355" Width="240" Margin="10,20,20,3" HorizontalAlignment="Left">
                        <Image x:Name="MoviePoster" Opacity="1" Source="{Binding Poster}"></Image>
                        <TextBlock Visibility="Collapsed" x:Name="MovieName" FontSize="18" Text="{Binding Name}" Foreground="White" Margin="0,15,0,321"></TextBlock>
                        <TextBlock Visibility="Collapsed" x:Name="MovieGenre" FontSize="16" Text="" Foreground="White" Margin="0,34,0,302"></TextBlock>
                        <TextBlock Visibility="Collapsed" x:Name="MovieReleaseDate" FontSize="16" Text="{Binding ReleaseDate}" Foreground="White" Margin="0,53,164,284"></TextBlock>
                        <materialDesign:RatingBar Visibility="Collapsed" Foreground="White"
                                                  Value="{Binding Rating}"
                                                  x:Name="MovieRatingBar" Margin="59,314,60,17"
                        />
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel IsItemsHost="True" Orientation="Horizontal"  />
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
        </ListBox>







private async void Window_Loaded(object sender, RoutedEventArgs e)
    {
        client.GetConfig();
        var popularMovies = await client.GetMoviePopularListAsync("en", 1);
        PopularMovies.Clear();
        foreach (var movie in popularMovies.Results)
        {
           // ImgListUrls.Add(client.GetImageUrl("w500",movie.PosterPath).AbsoluteUri);
            Movie mov = new Movie()
            {
                Id = movie.Id,
                Name = movie.OriginalTitle,
                ReleaseDate = movie.ReleaseDate.Value.ToShortDateString(),
                Poster = client.GetImageUrl("w500", movie.PosterPath).AbsoluteUri,
                Rating = movie.VoteAverage
            };

            PopularMovies.Add(mov);

        }
        MoviesDisplay.ItemsSource = PopularMovies; 
       // DownloadImages(ImgListUrls);
    }

已加载专用异步无效窗口(对象发送方,RoutedEventArgs e)
{
client.GetConfig();
var popularMovies=wait client.getmoviepopularlistatsync(“en”,1);
PopularMovies.Clear();
foreach(popularMovies.Results中的var电影)
{
//Add(client.GetImageUrl(“w500”,movie.PosterPath).AbsoluteUri);
电影mov=新电影()
{
Id=movie.Id,
Name=movie.originaltle,
ReleaseDate=movie.ReleaseDate.Value.ToSortDateString(),
Poster=client.GetImageUrl(“w500”,movie.PosterPath).AbsoluteUri,
评级=电影。视频平均值
};
增加(mov);
}
MoviesDisplay.ItemsSource=大众视频;
//下载图片(ImgListUrls);
}

您不需要在代码隐藏中访问这些元素。添加带有DataTriggers的样式,例如:

<Image Source="{Binding Poster}">
    <Image.Style>
        <Style TargetType="Image">
            <Setter Property="Opacity" Value="1"/>
            <Style.Triggers>
                <DataTrigger
                    Binding="{Binding IsMouseOver,
                              RelativeSource={RelativeSource AncestorType=ListBoxItem}}"
                    Value="True">
                    <Setter Property="Opacity" Value="0.5"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Image.Style>
</Image>

将文本块放入StackPanel并添加类似样式:

<StackPanel>
    <StackPanel.Style>
        <Style TargetType="StackPanel">
            <Setter Property="Visibility" Value="Collapsed"/>
            <Style.Triggers>
                <DataTrigger
                    Binding="{Binding IsMouseOver,
                              RelativeSource={RelativeSource AncestorType=ListBoxItem}}"
                    Value="True">
                    <Setter Property="Visibility" Value="Visible"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </StackPanel.Style>
    <TextBlock FontSize="18" Text="{Binding Name}" Foreground="White"/>
    <TextBlock FontSize="16" Text="{Binding ReleaseDate}" Foreground="White"/>
</StackPanel>

非常感谢。你是个救生员