没有成功绑定图像

时间:2012-08-18 16:28:30

标签: c# wpf image xaml data-binding

我正在尝试使用字符串(存储在另一个类中)绑定主窗口上的图像,该字符串表示我想要显示的图像的文件路径。

但没有出现......

这是我的主窗口代码xaml代码:

<HierarchicalDataTemplate x:Key="categoryTemplate"
        ItemsSource="{Binding Path=Items}" 
        ItemTemplate="{StaticResource animalTemplate}">
        <Grid MouseEnter="DockPanel_MouseEnter" MouseLeave="DockPanel_MouseLeave">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="30" />
                <ColumnDefinition Width="16" />
            </Grid.ColumnDefinitions>

            <Image HorizontalAlignment="Center" Source="{Binding Path=IconFilePath}" VerticalAlignment="Center" Width="16" Height="16" Grid.Column="0" />
            <TextBlock Text="{Binding Path=Name}" Margin="5,0,0,0" FontWeight="Bold" FlowDirection="{Binding Path=FlowDirection}" FontSize="14" HorizontalAlignment="Stretch" Grid.Column="1" />
            <Border CornerRadius="2" Background="Lavender" Grid.Column="2" Margin="0,0,5,0">
                <TextBlock Text="30" Foreground="DodgerBlue" HorizontalAlignment="Center" FontWeight="Bold" FontSize="13" />
            </Border>
            <aea:MenuButton Margin="0,0,2,0" Opacity="0" HorizontalAlignment="Right" Grid.Column="3" SnapsToDevicePixels="False" Width="16" Height="16" DisplayStyle="Text" IsEnabled="True" IsDropDownOpen="False">
                <aea:SplitButtonItem IsSelected="True" Visibility="Collapsed">
                    <Image HorizontalAlignment="Center" Source="Assets\FeedMenu.png" VerticalAlignment="Center"/>
                </aea:SplitButtonItem>
                <aea:SplitButtonItem Tag="{Binding Path=me}" Selected="Subscription_MarkAllAsRead">Mark all as Read</aea:SplitButtonItem>
                <aea:SplitButtonItem Tag="{Binding Path=me}" Selected="Subscription_AddAllToFavorites">Add all to Favorites</aea:SplitButtonItem>
                <aea:SplitButtonItem Tag="{Binding Path=me}" Selected="Subscription_ReadAllLater">Read all Later</aea:SplitButtonItem>
                <aea:SplitButtonItem Tag="{Binding Path=me}" Selected="Subscription_OpenAllBrowser">Open all in browser</aea:SplitButtonItem>
            </aea:MenuButton>
        </Grid>

        <!--<TextBlock Text="{Binding Path=Name}" FontWeight="Bold"/>-->
    </HierarchicalDataTemplate>

这是我的另一堂课:

    public string IconFilePath { get; private set; }
    public Subscription()
    {
        this.IconFilePath = @"C:\Users\Din\Din\Programming\Webs\Ended Projects\CodeCaged\Products\Read 360\Read 360\Read 360\bin\Release\feeds\1.ico";
    }

先谢谢了,

锭。

2 个答案:

答案 0 :(得分:2)

您是相对于DataContext的绑定,因此您需要确保它是该类的实例。同时检查binding errors,在这个小背景下不要再说了。

答案 1 :(得分:0)

如果没有关于如何设置此控件的完整代码列表很难(例如,DataContext的设置位置和方式是什么?,以及如何填充'Items'列表?)

但从表面上看,您似乎希望从Items元素获取'Name'和'IconFilePath',因此要确认Subscription类是否定义了IconFilePath和Name?

Snoop这样的工具可以在正在运行的应用程序可视树中自动显示绑定错误;我希望在这种情况下列出这样的内容。

同样为了减少可能的麻烦(这可能是问题),可能值得为您的数据类提及INotifyPropertyChanged。数据类的属性更改将不会自动进行。