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

时间:2015-01-16 15:04:00

标签: wpf vb.net xaml windows-phone-8

我在longlistselector中有一个带边框的绑定文本块(比如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 个答案:

答案 0 :(得分:0)

如果我理解了你想要的是你的列表中的每个项目都有不同的图像。

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

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

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

选项2: 创建转换器并将其绑定到Image元素的图像源。 例子: 图像示例here 可见性示例here 微软的入门示例here


我认为针对您的案例的最佳解决方案是使用选项1 。直接前进,不需要任何额外的处理。然而,这需要你有一个额外的字段,其路径可能不同意,因为它为静态图像路径保留了大量“无用”信息,并建议使用选项2