Daha sonra MainWindow tarafından çağrılacak bir dosyada oluşturduğum bir kılavuzdaki bir liste kutusunda bir ItemTemplateSelector kullanmaya çalışıyorum. İşte Liste Kutusu ItemTemplate Selector bir şablon seçmiyor
ince bağlanma çalışmaları (non-biçimlendirilmiş nesnelerin listesi listesinde görünür halde İşte benim xaml<Grid x:Class="NS.Views.ListView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:c="clr-namespace:NS.Commons"
DataContext="{Binding}">
<Grid.Resources>
<c:myConverter x:Key="converter" />
<c:TemplateSelector x:Key="borderSelector" />
<DataTemplate x:Key="greenItemTemplate">
<Border BorderThickness="3" BorderBrush="Green">
<StackPanel HorizontalAlignment="Stretch">
<TextBlock Text="{Binding Path=GroupName}"/>
<TextBlock Text="{Binding Path=myType}"/>
</StackPanel>
</Border>
</DataTemplate>
<DataTemplate x:Key="redItemTemplate">
<Border BorderThickness="3" BorderBrush="Red">
<StackPanel HorizontalAlignment="Stretch">
<TextBlock Text="{Binding Path=GroupName}"/>
<TextBlock Text="{Binding Path=myType}"/>
</StackPanel>
</Border>
</DataTemplate>
<DataTemplate x:Key="yellowItemTemplate">
<Border BorderThickness="3" BorderBrush="Yellow">
<StackPanel HorizontalAlignment="Stretch">
<TextBlock Text="{Binding Path=GroupName}"/>
<TextBlock Text="{Binding Path=myType}"/>
</StackPanel>
</Border>
</DataTemplate>
</Grid.Resources>
<ListBox ItemsSource="{Binding myCollectionOfMyClassObjects}"
Name="listBox1"
HorizontalContentAlignment="Stretch"
ItemTemplateSelector="{StaticResource borderSelector}"
>
</ListBox>
Ancak benim DataTemplateSelector kodu
public class TemplateSelector : DataTemplateSelector
{
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
FrameworkElement element = container as FrameworkElement;
if (element != null && item != null && item is myClass)
{
myClass agg = item as myClass;
if(agg.myType == a)
{
return element.FindResource("greenItemTemplate") as DataTemplate;
}
else if (agg.myType == b)
{
return element.FindResource("yellowItemTemplate") as DataTemplate;
}
else if (agg.myType == c)
{
return element.FindResource("redItemTemplate") as DataTemplate;
}
}
return null;
}
}
olduğunu), ItemTemplateSelector TemplateSelector yöntemlerini çağırmıyor. Yöntemlerin başında bir kırılma noktası koydum ve hiç aramamıştı.
Sorunun ne olabileceğini bilen var mı?
@
BorderBrush sen ne gerek için ne yapabilirim
DataTrigger
Template
şey gibi kullanılabilir anahtarlama ile
ListBoxItemStyle
kullanmaktır her zaman yeşildir. –Yorum için teşekkürler, sorun olmasa da. Tam kodu göndermek istemediğimden beri soruyu yolladım. Tekrar teşekkürler. Düzenlememe izin ver, böylece dikkat dağınıklığı olmadı. – locorecto
'ListBox''un' ItemsSource'unuz yüklendikten sonra değişiyor mu? TemplateSelectors'ın PropertyChanged veya CollectionChanged olaylarına yanıt verdiğini düşünmüyorum - Program bir kez – Rachel