所以我想打造出一個項目,將允許用戶在表格的左側鍵入一些文本到文本框,並會從我的數據源過濾掉可用項目名單。哲學對WPF綁定到參數
<Label Content="Enter item name below"></Label>
<TextBox Name="SearchTermTextBox" TabIndex="0" Text="" />
我的印象是我可以綁定到數據源的列表,然後使用轉換器過濾出不同於字符串的項目。
<ListBox DataContext="{Binding Colors}">
<ListBox.ItemsSource>
<MultiBinding Converter="{StaticResource FilterTextValueConverter}" ConverterParameter="{Binding ElementName=SearchTermTextBox, Path=Text}" />
</ListBox.ItemsSource>
<ListBox.ItemTemplate>
//etc...
</ListBox.ItemTemplate>
</ListBox>
但是,除非使用稱爲依賴項屬性的東西,否則無法綁定到converterparameter中的elementname。
編輯:看,我已經創建了上面的代碼混淆,這裏就是我想要綁定的轉換器:
public class FilterTextValueConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var trackedColors = value as List<Colors>;
if (trackedColors != null)
return (trackedColors).Where(item => item.ColorName.Contains(parameter.ToString())).ToList();
return null;
}
public object ConvertBack(object value, Type targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
public class Colors
{
public String ColorName;
public String Description;
}
什麼是錯在這裏我的做法?顯然,我很憤怒WPF神,因爲這是一個相當直接的操作,但我原則上被拒絕。任何幫助,將不勝感激。
不幸的是,我需要將ConverterParameter綁定到SearchTermTextBox,而Visual Studio不允許這樣做。我的轉換器必須返回列表。 –
我編輯了原文,以更好地解釋我的情況。我同意這個多重是不必要的,它只是一個讓它接受的實驗。 –
轉換器參數不能綁定。你需要使用'IMultiValueConverter'。我已經更新了答案。看看是否有幫助。 –