WPF: Passando um controle TabItem a classe de controlador
-
22-07-2019 - |
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?
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.