WPF RichTextBox - Erstatt merket tekst med egendefinert kontroll

stemmer
2

Før jeg begynner hacking i en virkelig rå løsning, tenkte jeg at jeg skulle se om noen kunne gi meg et lite dytt i riktig retning.

Hva jeg virkelig ønsker å gjøre er å la brukeren velge tekst i en RichTextBox, klikke på en knapp, og konvertere tekst til en tilpasset gjengitt kontroll. Konvertere den til en knapp med teksten de hadde valgt, for eksempel.

Publisert på 27/08/2009 klokken 05:05
kilden bruker
På andre språk...                            


2 svar

stemmer
2

Du kan gjøre dette med Command og CommandParameter

Først binde knappen til en ICommand, som:

<Button Content="Go" Command="{Binding MyCommand}" CommandParameter="{Binding ElementName=myRichTextBox, Path=Selection}" />
<RichTextBox Name="myRichTextBox" />

Så i ViewModel eller Controller eller kode-bak eller der, utsetter du ICommand som en eiendom, og peker til en metode for å gjøre jobben, som ...

public ICommand MyCommand
{
    get
    {
        if (_queryCommand == null)
        {
            _queryCommand = new RelayCommand<TextSelection>(DoWork);
        }
        return _queryCommand;
    }
}

private void DoWork(TextSelection param)
{
    string selectedText = param.Text;

    // Build your control here...
    // probably put it in an ObservableCollection<Control> which is bound by an Items Control, like a ListBox
}

Merk: Jeg har brukt RelayCommand fra Josh Smith utmerket MVVM Foundation , men du kan like bruke en RoutedUICommand for eksempel (som ville legge den ekstra fordelen av å la deg knytte inngangs gester til din kommando)

Svarte 27/08/2009 kl. 05:52
kilden bruker

stemmer
0

Du må skrive noen kode som tar valg og pakker den i en InlineUIContainer - det er hvordan du får kontroller inne i en rik tekstboks:

<RichTextBox>
    <FlowDocument>
        <Paragraph>
            <Run>Fo</Run>
            <InlineUIContainer>
                <Button IsEnabled="True">oB</Button>
            </InlineUIContainer>
            <Run>ar</Run>
        </Paragraph>
    </FlowDocument>
</RichTextBox>
Svarte 27/08/2009 kl. 09:36
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more