您好我有以下代码:
<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
答案 0 :(得分:1)
你的问题中有很多细节遗漏,但无论如何我都要去解答。它与回答您的问题非常不同,但它可能会帮助您了解添加问题以指导答案所需的详细信息。反过来,这个答案可以改进。有些迭代可能会让你真正得到答案。
我猜你是绑定到一组代表“文件夹”的对象,但你想要以编程方式修改所呈现的图像,具体取决于每个对象的状态,例如某些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>
将文件夹对象集合绑定到ListBox
ItemsSource
后,它会显示一组图像,使用转换器将Folder
对象转换为正确的{{1}实例。