Domanda

Ho una semplice IMarkupExtension come segue:

public class HelloWorldMarkup : IMarkupExtension<string>
{
    public string ProvideValue(IServiceProvider serviceProvider)
    {
        return "Hello World";
    }
    public override string ToString()
    {
        return "DesignTime Hello World";
    }
}

e la mia XAML che l'utilizza come questo ..

<StackPanel>
    <TextBlock Text="{my:HelloWorldMarkup}" />
    <HyperlinkButton Content="{my:HelloWorldMarkup}" />
</StackPanel>

In fase di runtime, tutto funziona come previsto.

In fase di progettazione Tuttavia, il contenuto degli spettacoli collegamento ipertestuale i valori di tempo (a partire da ToString), ma il testo del TextBlock non mostra.

Se lo lascio così, il mio progettista lagnano a me per giorni .. Qualcuno ha qualche suggerimento su come posso avere i miei margini di profitto dati i tempi di progettazione di visualizzazione in TextBlock Text?

Molte grazie,

È stato utile?

Soluzione

try ..

<TextBlock DataContext="{my:HelloWorldMarkup}" Text="{Binding}" />

Altri suggerimenti

Sei a metà strada sulla strada giusta. C'è qualche bella soluzione a questo ( "by design") problema:

Utilizzare l'interfaccia IMarkupExtension e derivare da un certo controllo con una proprietà di contenuto (ad esempio ContentControl). Ora ascolta le modifiche alla proprietà "Parent" (potrebbe essere necessario utilizzare alcuni workaround difficile utilizzando le proprietà allegate). Il callback evento dovrebbe quindi chiamare ProvideValue da solo utilizzando un semplice personalizzato implementazione IProvideValueTarget. Il risultato di ProvideValue deve poi essere assegnato alla proprietà "Contenuto". Ciò non pregiudica il funzionamento, non ProvideValue verrà valutata prima che il controllo e funziona come un fascino in fase di progettazione.

Sto anche pensando di installare una Legatura in brossura con la proprietà target riducendo così la classe di base per FrameworkElement.

Fare riferimento a https://github.com/MrCircuit/XAMLMarkupExtensions e https://github.com/MrCircuit/WPFLocalizationExtension per un esempio di questo processo

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