Como exibir em cada ListBoxItem TextBlocks com ligação a um arquivo de tabelas diferentes

StackOverflow https://stackoverflow.com/questions/1816533

  •  08-07-2019
  •  | 
  •  

Pergunta

Saudações a todos e desculpe pelo meu inglês! Eu tenho uma caixa de listagem, é itensSource = myClientList.DefaultView. Os itens do ListBox possuem um modelo (ControlTemplate), definido em um arquivo de recurso separado. Cada item contém um pouco de textblock, o texto de texto de cada um tem uma ligação aos campos do meu objeto MyClientsList.

Preciso adicionar um modelo de item mais texblock e cada um deles deve ter encadernação aos campos de outro myorderslist da minha classe. - (Então, desejo visualizar cada linha de informações da caixa de listagem de diferentes tabelas do meu banco de dados - esta é uma pergunta).

Problema, pois o Itens Source desse ListBox tem um link para objetar myclientslist e eu não posso definir o MyOrderList como itens ource da mesma caixa de listagem. Então, devo encontrar uma maneira de especificar textblock.datacontext wich in Inside ControlTemplate ou como é possível resolver esse problema de outra maneira?

PS Eu sou um novo em .NET e WPF e provavelmente tenho erros na minha explicação - desculpe por isso.

Foi útil?

Solução

Parece que você tem um tipo de exibição datagrid e deseja adicionar mais colunas para exibir as informações do pedido para um determinado cliente. Se for esse o caso, você terá que fazer algumas coisas. Primeiro, você precisará criar um objeto composto que armazena informações para ambas as entidades em um único objeto (para que cada linha do seu controle tenha todos os dados necessários para exibir). Em segundo lugar, eu recomendaria o uso de um controle de datagrid real para exibir linhas em vez de modelar um ListBoxItem. O ListView com um Gridview embutido na estrutura não é ótimo, então eu recomendaria o DataGrid do WPFTOOLKIT Para uma opção gratuita.

Outras dicas

Existem dois problemas aqui, se eu entendi a pergunta: como você cria uma única coleção que contém clientes e pedidos e como você exibe clientes e pedidos de maneiras diferentes na mesma caixa de listagem?

Em relação ao primeiro, você pode fazer isso usando uma Compositecollection.

Em relação ao segundo, defina dois dados de dados em vez de um ControlTemplate. Como a chave de cada Datatemplate, use o tipo de objeto que ele apresentará, por exemplo,

<DataTemplate x:Key="{x:Type local:Client}">

Como alternativa, use o itemsControl.itemtemplateSelector para apontar explicitamente em diferentes dados de dados, dependendo do tipo de item. OT Se você realmente precisar usar o ControlTemplates, consulte o itemsControl.itemContainersTyleSelector.

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