Dans l'application wpf j'ai lié Dictionnaire à la liste. J'ai propre style sur la liste. élément de liste de liste consit image et 3 texblocks.WPF ListBoxItems problème
classe ami est ici:
public class FriendData
{
public string idUser { get; set; }
public string nick { get; set; }
public string sefNick { get; set; }
public string status { get; set; }
public string photo { get; set; }
public string sex { get; set; }
public string isFriend { get; set; }
public string blockQuote { get; set; }
public FriendData(string idUser, string nick, string sefNick, string status, string photo, string sex, string isFriend)
{
this.idUser = idUser;
this.nick = nick;
this.sefNick = sefNick;
this.status = status;
this.photo = photo;
this.sex = sex;
this.isFriend = isFriend;
}
}
style ListBox est ici:
<Style x:Key="friendsListStyle" TargetType="{x:Type ListBox}">
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<Grid Name="MainGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.3*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="60"></RowDefinition>
</Grid.RowDefinitions>
<Image Source="{Binding Value.photo}" Margin="4,4,4,2"/>
<Grid Name="SlaveGrid" Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Name="tbName" Text="{Binding Value.nick}" Grid.Column="0" Grid.Row="0" Margin="2,2,2,2" FontSize="13" FontWeight="Medium"></TextBlock>
<TextBlock Name="tbBlockQuote" Text="{Binding Value.blockQuote}" Grid.Column="0" Grid.Row="1" Margin="2,2,2,2" FontSize="11" FontWeight="Normal" Foreground="DarkGray"></TextBlock>
<TextBlock Name="tbStatus" Text="{Binding Value.status}" Grid.Column="0" Grid.Row="2" Margin="2,2,2,2" FontSize="11" FontWeight="Normal"></TextBlock>
</Grid>
</Grid>
<DataTemplate.Triggers>
<!--<Trigger Property="IsMouseOver" Value="true">
<Setter Property="LayoutTransform" TargetName="MainGrid">
<Setter.Value>
<ScaleTransform ScaleX="1.35" ScaleY="1.35" />
</Setter.Value>
</Setter>
</Trigger>-->
</DataTemplate.Triggers>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
Mon premier problème est, tbStatus est binded au statut de propriété ami de classe. Le statut peut avoir seulement 3 valeurs: 0,1,2. Si le statut a la valeur 0, j'ai besoin de mettre tbStatus.Text = "Offline", si l'état a la valeur 1, j'ai besoin de tbStatus.Text = "Online" et si le status est 2 alors tbStatus.Text = "Just Log". Est-il possible que cette condition soit définie à partir de XAML dans le style listBox? Mon deuxième problème est si l'état est 0, j'ai besoin convertir l'image en niveaux de gris. J'ai la fonction qui convertit en niveaux de gris. Je voudrais définir ces conditions dans le style listBox. Toute avance?
Voici:
private void ConvertImageToGrayScaleImage(string uri)
{
Image grayImage = new Image();
BitmapImage bmpImage = new BitmapImage();
bmpImage.BeginInit();
bmpImage.UriSource = new Uri(uri);
bmpImage.EndInit();
FormatConvertedBitmap grayBitmap = new FormatConvertedBitmap();
grayBitmap.BeginInit();
grayBitmap.Source = bmpImage;
grayBitmap.DestinationFormat = PixelFormats.Gray8;
grayBitmap.EndInit();
grayImage.Source = grayBitmap;
LayoutRoot.Children.Add(grayImage);
}
Ceci est beaucoup de code, et très peu de question. Pouvez-vous couper le code jusqu'à ce que vous ayez un ensemble minimal qui reproduit le problème? –