您好,我有以下代码:
<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
时。我可以使用加载的事件并将发送者类型转换为图像类型,但我不希望那样,因为我想在运行时绑定(bind)期间绑定(bind)图像源。因此,即使我们尝试加载事件,也无济于事,因为控件不会被加载。
请帮忙。
谢谢, 子轩
最佳答案
您的问题中缺少相当多的细节,但无论如何我都会努力回答。它与回答您的问题非常不同,但它可能会帮助您了解添加问题以指导答案所需的详细信息。反过来,可以完善这个答案。经过一些迭代,您实际上可能会得出答案。
我猜你正在绑定(bind)到一组表示“文件夹”的对象,但你想根据每个对象的状态以编程方式修改所呈现的图像,例如某些 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 对象集合绑定(bind)到 ListBox
ItemsSource
后,它将使用转换器显示一组图像以转换 Folder
将对象指向正确的 ImageSource
实例。
关于c# - 如何访问放置在列表框数据模板内的控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2605199/