簡體   English   中英

動態自定義ListBox中的TextBlock文本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM