그래서 사용자가 양식의 왼쪽에있는 텍스트 상자에 일부 텍스트를 입력하고 내 데이터 원본에서 사용 가능한 항목을 필터링 할 수 있도록 프로젝트를 구축하려고합니다. 명부. 철학 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>
그러나 종속성 속성을 사용하지 않는 한 변환기 매개 변수의 요소 이름에 바인딩 할 수 없습니다.
편집 :
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'을 사용할 필요가 있습니다. 나는 그 대답을 업데이트했다. 도움이되는지 확인하십시오. –