Domanda

Sto usando WPF e di disporre di una Tabella all'interno di un controllo RichTextBox.Ho bisogno di ottenere il colore di sfondo della cella di tabella per modificare ottiene la messa a fuoco.Il mio problema è che non riesco Attivato o altri eventi di incendio per la TableCell.

<RichTextBox>
    <FlowDocument>
       <Table>
           <Table.Columns> 
              <TableColumn />
           </Table.Columns>
           <TableRowGroup>
               <TableRow>
                   <TableCell GotFocus="SelectionCell_GotFocus">
                       <Paragraph>1</Paragraph>
                   </TableCell>
               </TableRow>
           </TableRowGroup>
       </Table>
    </FlowDocument>
</RichTextBox>

L'immagine qui sotto mostra la tabella nel controllo RichTextBox.Quello che mi piacerebbe essere in grado di fare è di cambiare il background mentre l'utente si muove tra le celle della tabella.

il testo alt http://img16.imageshack.us/img16/8151/wpftable.png

Edit:Dopo ulteriori indagini, il problema non è limitato alla Tabella in una RichTextBox, nessun controllo in una RichTextBox sembra essere in grado di generare eventi.Ho messo un pulsante e non era in grado di ottenere per il fuoco il suo evento Click.Sembra che la RichTextBox maschere di tutti gli eventi, spero che ci sia un modo per smascherare loro.

È stato utile?

Soluzione

La metà di risposta è quello di impostare il IsDocumentEnabled proprietà del controllo RichTextBox per vero.Che permette ai controlli all'interno di esso per essere abilitato come per Incorporato Elementi dell'interfaccia utente in RichTextBox.Purtroppo ancora non generare l'evento di cui ho bisogno è Attivato su un TableCell anche se è possibile ottenere l'evento a fuoco mettendo un pulsante nella cella e cliccando su di esso.Che bolle l'evento GotFocus l'interfaccia utente albero a TableCell.Non voglio un pulsante in ogni cella, però, quindi il tempo per cercare una soluzione alternativa.

<RichTextBox IsDocumentEnabled="True">
    <FlowDocument>
        <Table>
            <Table.Columns> 
                <TableColumn />
            </Table.Columns>
            <TableRowGroup>
                <TableRow>
                    <TableCell GotFocus="SelectionCell_GotFocus">
                        <BlockUIContainer>
                            <Canvas>
                                <Button Click="Button_Click">
                                    Click
                                </Button>
                            </Canvas>
                        </BlockUIContainer>
                    </TableCell>
                </TableRow>
            </TableRowGroup>
        </Table>
    </FlowDocument>
</RichTextBox>

Altri suggerimenti

Aggiornamento

Ho trovato i seguenti (a: http://www.databaseforum.info/8/504107.aspx) PROVATO E FUNZIONA:

ContentElement, una delle classi base del Paragrafo e, per inciso, la classe base di tutto ciò che vive in un documento che definisce le proprietà e gli eventi che si stanno cercando.

Nel Codice

void MyCode() 
{
    Paragraph p = new Paragraph();
    p.MouseEnter += p_MouseEnter;
}

void p_MouseEnter(object sender, EventArgs e) 
{
    Paragraph p = (Paragraph)sender;
    p.Background = Brushes.Red;
}

**In Markup**

<Paragraph MouseEnter="p_MouseEnter" />

**You can also trigger on properties like IsMouseOver in styles**
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top