繁体   English   中英

如何访问列表框数据模板中的控件?

[英]How to access a control placed inside data template of listbox?

嗨,我有以下代码:

<ListBox x:Name="foldersListBox" Grid.Column="0" MouseLeftButtonUp="foldersListBox_MouseLeftButtonUp" 


                             BorderThickness="0"  Height="AUTO" 
                             ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                             ScrollViewer.VerticalScrollBarVisibility="Disabled">
                        <DataTemplate>
                            <Border BorderBrush="LightGray"
                            BorderThickness="2"
                            CornerRadius="4">
                                <Image x:Name="folderImage" Width="70" Height="70" Margin="3" />
                            </Border>
                        </DataTemplate>
</ListBox>

现在,当我试图从后面的代码访问folderImage 我可以使用加载的事件并将发送者作为图像类型进行类型转换,但我不希望这样,因为我想在运行时绑定期间绑定图像源。 因此,即使我们将尝试加载事件,因为控件不会被加载,因此无法提供帮助。

帮助PLZ。

谢谢,Subhen

你的问题中有很多细节遗漏,但无论如何我都会勉强回答。 它与回答您的问题非常不同,但它可能会帮助您了解添加问题以指导答案所需的详细信息。 反过来,这个答案可以改进。 在一些迭代中你可能实际上得到了答案。

我猜你是绑定到一组代表“文件夹”的对象,但你想要以编程方式修改所呈现的图像,具体取决于每个对象的状态,例如一些FolderType属性。

解决方法是使用值转换器,如果您的图像来自有限集。

public class FolderToImageConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        Folder folder = value as Folder;
        ImageSource result;
        // Logic to determine which ImageSource to use for a folder.
        return result;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

现在来看看这个XAML: -

<Grid x:Name="LayoutRoot">
    <Grid.Resources>
       <local:FolderToImageConverter x:Key="ImageConverter" />
    </Grid.Resources>
    <ListBox x:Name="foldersListBox">
        <ListBox.ItemTemplate>
             <DataTemplate> 
                <Border BorderBrush="LightGray" BorderThickness="2" CornerRadius="4"> 
                  <Image Source="{Binding Converter={StaticResource ImageConverter}}" Width="70" Height="70" Margin="3" /> 
                </Border> 
             </DataTemplate> 
        </ListBox.ItemTemplate>
    </ListBox> 
</Grid>

将Folder对象集合绑定到ListBox ItemsSource ,它将使用转换器显示一组图像,以将Folder对象转换为正确的ImageSource实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM