WPF はスタイル ファイル内のコントロール コンポーネントを検索します。

通常、レイアウト ファイル内のコントロールを探しますが、スタイル スタイルでレイアウトを記述し、コード内のコントロールを更新することもあります。このとき、コントロールを直接取得することはできません。最初にスタイル ファイルを見てみましょう。

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Style x:Key="ImageBorderStyle" TargetType="{x:Type ListViewItem}">
        <Setter Property="Height" Value ="165"/>
        <Setter Property="Width" Value="292"/>
        <Setter Property="Margin" Value="0,8,0,8"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ListViewItem}">
                    <Border Width="292" Height="165" BorderThickness="4" BorderBrush="#CDCDCC" CornerRadius="6"
                        x:Name="ItemBorder">
                        <Image Stretch="Uniform" Width="292" Height="165" x:Name="ListItemImage">
                            <Image.Clip>
                                <RectangleGeometry RadiusX="5" RadiusY="5" Rect="0,0,284,157"/>
                            </Image.Clip>
                        </Image>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter TargetName="ItemBorder" Property="BorderBrush" Value="#10AC03"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

その中には ListItemImage というピクチャ コントロールがあり、Window を初期化するときに、フォルダ内のピクチャに応じてピクチャ リストを動的に更新するため、Window の最初の完了後にこのコントロールを見つけることができる必要があります。コントロールを見つける方法を見てみましょう

Image image = (Image)listViewItem.Template.FindName("ListItemImage", listViewItem);

listViewItem は上記のスタイルを参照するコントロールであり、Image コントロールは上記のコードで見つけることができます。

習ったことがありますか?私の記事が気に入ったら、「いいね!」をお願いします!

おすすめ

転載: blog.csdn.net/baoolong/article/details/126643380