Pergunta

Eu estou usando WPF eo TabControl como meu Menu. Isso gera um monte de código por trás de código porque um arquivo está controlando todos os ações do usuário. Então eu estava pensando que eu poderia usar uma classe Controller para cada TabItem. Usei-o e ele funciona, mas eu não gosto do resultado. Eu tenho que usar o método FindName() na TabItem que eu passar para o Controller e gera algum código feio que pode ser difícil de debug (na minha opinião, pelo menos).

Então, há alguma maneira de passar o TabItem para que eu possa encontrar os controles na página xaml no meu Controller?

Por exemplo, eu tenho TabItem1, TabItem2 e TabItem3. Cada um contendo uma página para o usuário para uso. Então eu quero passar TabItem1 para TabItem1Controller controlador. No momento eu estou fazendo isso desta forma:

public TurbineController(TabItem tab)
    {
        _client = tab;
    }

Mas então eu tenho que usar o método FindName().

O meu pedido é possível?

Foi útil?

Solução

Você tem isso para trás, pelo menos, para a abordagem MVVM. O controlador (TurbineContoller) não devem fazer referência à vista (TabItem), a vista deve referenciar o controlador. Criar uma coleção de controladores e vincular a coleção para um tabcontrol. O datacontext de cada guia será o controlador que o guia vai vincular a.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top