안녕하세요. 목록 상자에서 항목을 찾고 싶습니다. 많은 예제를 찾았지만 좋지 않은 것 같아요.WPF ListBox에서 항목을 찾을 수 있습니다.
목록 상자에 바인딩합니다. 친구가 내 수업, 그것은 다음과 같이 :
[JsonObject]
[Export]
public class Friend
{
public override string ToString()
{
return Nick;
}
[JsonProperty("idUser")]
public string IdUser { get; set; }
[JsonProperty("nick")]
public string Nick { get; set; }
[JsonProperty("sefNick")]
public string SefNick { get; set; }
[JsonProperty("isFriend")]
public bool IsFriend { get; set; }
[JsonProperty("status")]
public int Status { get; set; }
}
를 내가 여기에 목록 상자에 자신의 데이터 템플릿을해야 함은 다음과 같습니다
<ListBox Name="Friends"
SelectedIndex="{Binding Path=SelectedFriendsIndex,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding Path=SelectedFriend, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged}"
Style="{DynamicResource friendsListStyle}"
IsTextSearchEnabled="True" TextSearch.TextPath="Nick"
</ListBox>
I :
<Style x:Key="friendsListStyle" TargetType="{x:Type ListBox}">
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<Grid Name="RootLayout">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.3*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="60"></RowDefinition>
</Grid.RowDefinitions>
<Image Margin="4,4,4,2" Grid.Column="0">
<Image.Source >
<MultiBinding Converter="{StaticResource imageConverter}">
<Binding Path="Value.ProfilePhoto"></Binding>
<Binding Path="Value.Status"></Binding>
</MultiBinding>
</Image.Source>
</Image>
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock
Text="{Binding Value.Nick}"
Margin="2,2,2,2"
FontSize="13"
FontWeight="Medium"
Grid.Column="0" Grid.Row="0">
</TextBlock>
<TextBlock
Text="{Binding Value.BlockQuote}"
FontSize="11"
FontWeight="Normal"
Foreground="DarkGray"
Grid.Column="0" Grid.Row="1" Margin="2,2,2,2"></TextBlock>
<TextBlock
Text="{Binding Value.Status,Converter={StaticResource statusConverter}}"
Style="{StaticResource StatusStyle}"
Grid.Column="0" Grid.Row="2" >
</TextBlock>
</Grid>
</Grid>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="LayoutTransform" TargetName="RootLayout">
<Setter.Value>
<ScaleTransform ScaleX="1.25" ScaleY="1.25" />
</Setter.Value>
</Setter>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
</Setter.Value>
내가 목록 상자에이 템플릿을 적용 텍스트 검색 사용 가능 Nick 님의 검색을 원합니다. Nick은 Friend 클래스의 문자열 속성입니다.
IsTextSearchEnabled="True" TextSearch.TextPath="Nick"
하지만 작동하지 않습니다. 나는 IsTextSearchEnabled를 활성화하고 Item 객체의 string 속성에 TextSearch.TextPath를 설정해야한다는 것을 알게되었습니다.
내가 싫어하는 것. 조언을 주셔서 감사합니다.
예, 관찰 가능한 컬렉션입니다. 고마워, 이제는 잘된거야. –