如何在文本块文本更改时更改边框背景



我在longlistselector中有一个绑定的文本块(比如MRE比6),后面有一个边框。 边框适用于所有文本块。 下面是绑定代码:

Public Sub LoadData()
    ' Sample data; replace with real data
    Me.Items.Add(New ItemViewModel() With {.LineTwo = "New Endowment Plans", .LineThree = ""})
    Me.imgsource.Add(New ItemViewModel() With {.imgsource = "/Images/endow_1.jpg"})
    Me.Items.Add(New ItemViewModel() With {.LineTwo = "New Money Back Plans", .LineThree = ""})
    Me.Items.Add(New ItemViewModel() With {.LineTwo = "Single Premium Plans"})
    Me.Items.Add(New ItemViewModel() With {.LineTwo = "New Term", .LineThree = "Plans"})
    Me.Items.Add(New ItemViewModel() With {.LineTwo = "New Health", .LineThree = "Plans"})
    Me.Items.Add(New ItemViewModel() With {.LineTwo = "New Pension", .LineThree = "Plans"})
    Me.Items.Add(New ItemViewModel() With {.LineTwo = "Withdrawl", .LineThree = "Plans"})
    Me.Items.Add(New ItemViewModel() With {.LineTwo = "Plans", .LineThree = "Information"})
End Sub

这是 XAML 代码:

<phone:LongListSelector>
    <phone:LongListSelector.ItemTemplate>
        <DataTemplate>
            <StackPanel  Orientation="Horizontal" Margin="12,2,0,4" Height="105" Width="432" Tap="StackPanel_Tap">
                <Border x:Name="planImage" BorderThickness="5" Width="99" Height="99" BorderBrush="#FFFFC700">
                    <Border.Background>
                        <ImageBrush ImageSource="/Images/liclogo.jpg" Stretch="Fill"/>
                    </Border.Background>
                </Border>
                <StackPanel Width="311" Margin="8,-7,0,0">
                    <TextBlock x:Name="Plantype" Foreground="#FF8FF01B" Text="{Binding LineTwo }"  TextWrapping="Wrap" Margin="10,0" Style="{StaticResource PhoneTextExtraLargeStyle}" FontSize="{StaticResource PhoneFontSizeLarge}" />
                    <TextBlock Foreground="#FF8FF01B" Text="{Binding LineThree }" TextWrapping="Wrap" Margin="10,-2,10,0" Style="{StaticResource PhoneTextExtraLargeStyle}" FontSize="{StaticResource PhoneFontSizeLarge}" />
                </StackPanel>
            </StackPanel>
        </DataTemplate>
    </phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>

我想更改每个边框背景图像,因为我使用的一个在所有文本块中都反射相同。

如果我理解正确,您希望在这里为列表中的每个项目提供不同的图像。

有两种方法可以实现这一点。

选项 1:例如,添加一个名称为 ImagePath 的新属性(如 LineTwo 和 LineThree),并分别为每个项目添加图像路径,然后将代码更改为:

<Border.Background>
    <ImageBrush ImageSource="{Binding ImagePath}" Stretch="Fill"/>
</Border.Background>

选项 2:创建一个转换器并将其绑定到 Image 元素的图像源。例子:此处为图像示例可见性示例在这里Microsoft入门示例在这里


我认为适合您的情况的最佳解决方案是使用选项 1。简单明了,不需要任何额外的处理。但是,这将要求您拥有带有可能不同意的路径的额外字段,因为它为静态图像路径保留了许多"无用"信息,并建议使用选项 2

最新更新