Per quelli di voi utilizzando Expression Blend così come Visual Studio nei vostri progetti reali, ti prego, aiutami a capire come si utilizza miscela e Visual Studio nella vostra attività di sviluppo/progettazione di tutti i giorni, ecco un vero e proprio scenario:Come posso utilizzare Expression Blend per modificare un DataTemplate creato in Visual Studio?
Ho creato la seguente semplice applicazione WPF in Visual Studio. Lo mostra un elenco di oggetti cliente con un DataTemplate che mostra i clienti in semplici scatole arancioni.
Io ora voglio mettere un po 'di pizazz in questo DataTemplate usando Expression Blend.
ho aprire il progetto in Expression Blend pensando che sto andando a vedere le caselle di colore arancione che io posso cambiare il colore di, creare un'animazione come io mouse su di loro, ridimensionarla, ecc, tuttavia, tutto Vedo in Expression Blend una casella completamente vuota.
così ho capito:
- Expression Blend non riesco a capire che i miei dati viene dal ViewModel e quindi non visualizzarlo. È una limitazione di Blend o devo modificare il mio codice in qualche modo in modo che Blend possa interpretare quali dati verranno visualizzati in fase di esecuzione?
- Utilizzo Expression Blend 3 con funzionalità di "dati di esempio". Qual è il modo migliore per utilizzare questa funzione di dati di esempio in modo che anche se non può interpretare il C# e capire quali dati usciranno dalla proprietà ViewModel per riempire la casella di riepilogo, come posso ottenerlo almeno a produrre alcuni dati fittizi in modo da poter manipolare il DataTemplate?
XAML:
<Window x:Class="TestStringFormat234.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<DataTemplate x:Key="DataTemplateCustomers">
<Border CornerRadius="5" Background="Orange" Padding="5" Margin="3">
<StackPanel Orientation="Horizontal">
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} {1} (hired on {2:MMM dd, yyyy})">
<Binding Path="FirstName"/>
<Binding Path="LastName"/>
<Binding Path="HireDate"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</StackPanel>
</Border>
</DataTemplate>
</Window.Resources>
<Grid>
<ListBox ItemsSource="{Binding GetAllCustomers}"
ItemTemplate="{StaticResource DataTemplateCustomers}">
</ListBox>
</Grid>
</Window>
Codice Dietro:
using System.Windows;
using System.Collections.ObjectModel;
using System;
namespace TestStringFormat234
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
DataContext = new CustomerViewModel();
}
}
//view model
public class CustomerViewModel
{
public ObservableCollection<Customer> GetAllCustomers {
get {
ObservableCollection<Customer> customers = new ObservableCollection<Customer>();
customers.Add(new Customer { FirstName = "Jim", LastName = "Smith", HireDate = DateTime.Parse("2007-12-31") });
customers.Add(new Customer { FirstName = "Jack", LastName = "Jones", HireDate = DateTime.Parse("2005-12-31") });
return customers;
}
}
}
//model
public class Customer
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime HireDate { get; set; }
}
}
Perché non mettete la vostra risposta come una risposta e allora accettalo. Sarà più facile per gli altri vedere allora –
Lo faccio se ricordo, ma ci sono ostacoli temporali che lo rendono difficile: devi aspettare 48 risposte prima di rispondere alla tua stessa domanda e poi altre 48 ore prima di accettarlo. –
Beh, è almeno nelle risposte. –