Witam,
parę godzin wczoraj szukałem rozwiązania, lecz google tylko podpowiada z zaznaczonym itemem w listboxie. Przechodząc do sedna sprawy - mam ListBoxa, w nim chcę dodawać wiadomości o dwóch może później trzech typach wyglądu. Dwa już napisałem jako DataTemplate (mogą być błędy, bo jestem początkujący w WPF :D)
<DataTemplate x:Key="Lewy">
<Grid d:DesignWidth="453" d:DesignHeight="209" HorizontalAlignment="Stretch">
<Border BorderBrush="Gray" Background="#e8e8e8" Width="160" CornerRadius="8,8,8,8" Margin="10,31,283,5" HorizontalAlignment="Left" >
<Label Content="{Binding Text2, FallbackValue=Text2}" Margin="10" HorizontalContentAlignment="Stretch" Foreground="White" />
</Border>
<Label Content="{Binding Text1, FallbackValue=Text1}" HorizontalAlignment="Left" Margin="10,5,0,0" VerticalAlignment="Top" RenderTransformOrigin="-0.763,0.462" Width="130" FontStyle="Italic"/>
</Grid>
</DataTemplate>
i Drugi:
<DataTemplate x:Key="Prawy">
<Grid d:DesignHeight="209" HorizontalAlignment="Stretch">
<Border BorderBrush="Gray" Background="#82e783" Width="160" CornerRadius="8,8,8,8" Margin="145,26,0,10" HorizontalAlignment="Right" >
<Label Content="{Binding Text2, FallbackValue=Text2}" Margin="10" HorizontalContentAlignment="Stretch"/>
</Border>
<Label Content="{Binding Text1, FallbackValue=Text1}" HorizontalAlignment="Right" Margin="145,0,0,0" VerticalAlignment="Top" RenderTransformOrigin="-0.763,0.462" Width="130" HorizontalContentAlignment="Right" FontStyle="Italic"/>
</Grid>
</DataTemplate>
i teraz - nowy item do ListBoxa dodaje w ten sposób:
public class Wiad
{
public string Text1 { get; set; }
public string Text2 { get; set; }
public int Typ { get; set; }
}
private void listbox_wiadomosci(string text1, string text2, int tem)
{
if (!lbWiadomosci.CheckAccess())
{
Dispatcher.Invoke(DispatcherPriority.Send,
(Action)delegate
{
Wiad itm = new Wiad();
itm.Text1= text1;
itm.Text2= text2;
itm.Typ = tem;
lbWiadomosci.Items.Add(itm);
});
}
else
{
Wiad itm = new Wiad();
itm.Text1= text1;
itm.Text2= text2;
itm.Typ = tem;
lbWiadomosci.Items.Add(itm);
}
}
Dispatcher, gdyż to z innego wątku będzie wywoływane.
I moje pytanie - Jak zrobić, aby w zależności od typu (int o wartosciach 1 lub 2) wyglad tego itemu sie zmieniał na jedno z tych dwóch DataTemplate?