[英]Customize text of TextBlock Text within ListBox dynamically
我有一個帶有自定義DataTemplate的ListBox,如下所示:
<ListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Value}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我想基於頁面上另一個控件的值來自定義TextBlock內容,該控件用於過濾ListBox中的項目。 因此,如果過濾器控件中包含文本“ Hello”,則列表文本為“ Hello World!”。 會顯示為Hello world! (“ Hello”加粗)。
我不確定在這種類型的自定義格式中要掛在哪里。 我曾考慮過使用Converter,但它們僅支持單個參數,而在Silverlight 4中仍然無法使用multivalueconverters。我想到了一個事件,在該事件中我可以遍歷所有項目,但似乎沒有出現在ListBox或目錄中。項目級別。 我看到了這個選項 ,但是我想知道是否沒有更簡單的解決方案。
更新:由於需要在字符串中的多個位置進行匹配,因此我將需要使用多個RUN塊,這甚至使情況變得更加復雜。 例如,Hello world world Hello將進行兩次比賽。
我認為您可以使用轉換器來完成此任務。 您只需要在ConverterParameter中傳入過濾器文本框的值即可。 您的綁定看起來像這樣:
<TextBlock Text="{Binding Value, Converter={StaticResource YourConverterName}, ConverterParameter={ElementName=FilterTextBox, Path=Text}}" />
轉換方法以供參考:
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
那時,在您的Convert方法中,您將通過value參數獲得TextBlock的文本,並通過“ parameter”參數獲得過濾器TextBox的文本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.