Domanda

Ho una visione di List che ha un ObservableCollection come SOURMESOURCE e ha diverse colonne. Uno di questi è una colonna di stato che, a seconda dello stato corrente dell'elemento, mostra un messaggio diverso. Attualmente questo è implementato come una stringa di base e, sebbene funziona, è tutt'altro che carino o inutile. Voglio essere in grado di variare il tipo di output per soddisfare più correttamente lo stato dell'articolo.

Ho fatto delle ricerche e sapevo che devo usare un cellTemplate per influenzare il display, ma tutti i diversi tipi di modelli mi sopraffanno semplicemente al punto in cui non riesco a capire dove andare dopo.

Il mio codice (escluso molti altri fluff di ListView) è il seguente:

<ListView Name="itemsListView" ItemsSource="{Binding Source={StaticResource listingDataView}}" IsSynchronizedWithCurrentItem="True">
    ...
    <ListView.View>
         <GridView AllowsColumnReorder="true" ColumnHeaderToolTip="Item Information">
             ...
             <GridViewColumn DisplayMemberBinding="{Binding Path=StatusMessage}" Width="283" Header="Status" HeaderContainerStyle="{StaticResource GVHeaderLeftAlignedStyle}" />
         </GridView>
    </ListView.View>
</ListView>

Sì, gli elementi hanno "Messaggio di stato" con codice rigido che vengono aggiornati insieme ad altre proprietà che sono effettivamente rilevanti per il codice, causando brutte duplicazioni altrove nel mio codice. (E sì, so che questo è tutt'altro che carino, ma voglio anche migliorare questo.) Quella proprietà sarebbe chiamata ItemState Dato che non sono così creativo.

Quindi, la mia domanda è: come posso variare questa colonna per avere il display più adatto per lo stato dato? Le descrizioni testuali faranno per molti stati, ma alcune sono piuttosto lunghe e potrebbero trarre profitto da un testo con una barra di avanzamento oltre ad esso, e forse una sorta di tempo rimanente. Un altro stato trarrebbe profitto dall'avere un collegamento ipertestuale cliccabile. In altre parole, penso di aver bisogno di almeno 3 diversi cella.

Mi rendo conto che è una domanda piuttosto aperta che soffre in gran parte degli errori di progettazione di qualcuno (= me) che ha poca esperienza con il WPF, ma è esattamente per questo che spero che qualcuno sperimentato possa farmi dire con un po 'di codice di base Prima di fare un casino ancora peggiore di quello che ho già. :)

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top