在WPF DataTemplate中动态地将源分配给图像

时间:2017-08-02 07:56:31

标签: .net wpf xaml

在我的窗口中,我正在使用模板选择器,在此范围内,我在模板中有许多图像。我需要做的是,在页面加载时动态分配图像的源,因为它依赖于图像的其他值,但我似乎无法访问模板中的图像。

<UserControl.Resources>
    <local:UIDataTemplateSelector x:Key="UITemplateSelector" />
    <DataTemplate x:Key="Modern">
        <Button Name="WindowIconImage_" 
                Grid.Row="0" 
                Grid.Column="0" 
                MaxHeight="48" 
                MaxWidth="48" 
                Width="48" 
                Height="48">
            <Button.Template>
                <ControlTemplate>
                    <Image Name="WindowIconImage" 
                           IsEnabled="False" 
                           IsHitTestVisible="False"/>                                 
                </ControlTemplate>
            </Button.Template>
        </Button>
    </DataTemplate>

从这里开始,我希望将图像设置为我在代码中获得的值,此时我还剩下

Set(ByVal value As System.Windows.Media.ImageSource)
        WindowIconImage.Source = value
    End Set

我尝试了各种方法,但我无法提取要分配的值。关于如何解决这个问题的任何提示?我试图直接投射到按钮或图像,而不是按钮,但仍然没有运气

我的模板选择器:

Namespace UIDataSelector
Public Class UIDataTemplateSelector
    Inherits DataTemplateSelector

    Public uiVersion As String

    Public Overrides Function SelectTemplate(ByVal item As Object, ByVal container As DependencyObject) As DataTemplate

        Dim element As FrameworkElement = TryCast(container, FrameworkElement)

        If element IsNot Nothing AndAlso item IsNot Nothing Then
            uiVersion = System.Environment.GetEnvironmentVariable("xxx")

            If uiVersion = "Classic" Then
                Return TryCast(element.FindResource("ClassicTemplate"), DataTemplate)
            ElseIf uiVersion = "Modern" Then
                Return TryCast(element.FindResource("ModernTemplate"), DataTemplate)
            End If
        End If

        Return Nothing
    End Function
End Class
End Namespace

0 个答案:

没有答案