如何访问Listvew ItemsPanelTemplate和DataTemplate内部的属性

时间:2019-04-25 22:52:50

标签: c# wpf listview

我对C#和WPF还是很陌生。我正在制作一个小的照片查看器。我希望有一个照片网格,在其中可以根据用户首选项和屏幕尺寸来更改列数和图片大小。我可以在设计时做所有我想做的事情,但是我找不到在运行时如何更改某些属性的方法。 特别是,我需要更改UniforGrid的列数以及图像的宽度和高度。

<ListView x:Name="LVMiniaturasGrandes" Margin="23,10,464,270.5" Background="#FF272727" Foreground="White" Visibility="Hidden" BorderBrush="{x:Null}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <UniformGrid  Columns="4" HorizontalAlignment="Stretch"/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ItemsControl Padding="10">
                        <StackPanel Orientation="Vertical" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
                            <Image Source="{Binding ImagenGrande2}"  Width="200" Height="200" HorizontalAlignment="Stretch" VerticalAlignment="Top" Stretch="Uniform" />
                            <StackPanel Orientation="Horizontal" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
                                <TextBlock Text="{Binding NombreFichero}" HorizontalAlignment="Left" VerticalAlignment="Bottom" Foreground="White" />
                                <TextBlock Text="{Binding VerEstrellas}" Foreground="Red" TextAlignment="Right" HorizontalAlignment="Right" VerticalAlignment="Bottom"/>
                            </StackPanel>
                        </StackPanel>
                    </ItemsControl>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

我希望能够同时改变列数以及图像的高度和宽度,具体取决于滑块控制位置和屏幕的实际像素大小。

欢迎任何帮助。预先感谢。

编辑:

我已经能够修改UniformGrid中的列数。它可能不是很优雅,但是可以工作。但是我仍然无法访问图像的宽度和高度。

private void RejillaImagenesGrandes_Initialized(object sender, EventArgs e)
        {
            _UGImagenesGrandes = (UniformGrid)sender;
        }

这样,我可以访问UniformGrid并动态修改列数

0 个答案:

没有答案