none
Erro de Binding RRS feed

  • Pergunta

  • Bom dia pessoal, estou aqui outra vez!

    Estou tentando retornar o item selecionado do listview no combobox e não está funcionando. Quando seleciono um item no combo ele retorna para o textbox normalmente, quando seleciono no listview ele retorna também normalmente no textbox, mas eu também quero que retorne para o combobox o item selecionado no listview, já tentei usar o combobox só com uma coluna mas mesmo assim não dá certo, onde estou errando?

    <Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="204" Width="493" ResizeMode="NoResize" WindowStartupLocation="CenterScreen">
      <Grid Loaded="Window_Loaded">
        
        <ListView ItemsSource="{Binding}" Margin="12,12,0,0" Name="listView1" HorizontalAlignment="Left" Width="271" Height="140" VerticalAlignment="Top" ToolTip="Lista Estados Cadastrados">
          <ListView.View>
            <GridView>
              <GridViewColumn Width="70" Header="Sigla" DisplayMemberBinding="{Binding Path=id_estado}"></GridViewColumn>
              <GridViewColumn Width="180" Header="Estado" DisplayMemberBinding="{Binding Path=estado}"></GridViewColumn>
            </GridView>
          </ListView.View>
        </ListView>
    
        <ComboBox Height="23" HorizontalAlignment="Left" Margin="297,12,0,0" Name="comboBox1" VerticalAlignment="Top" Width="163" ItemsSource="{Binding}" >
          <ComboBox.ItemTemplate>
            <DataTemplate>
              <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding id_estado}" />
                <TextBlock Text=" - "/>
                <TextBlock Text="{Binding estado}"/>
              </StackPanel>
            </DataTemplate>
          </ComboBox.ItemTemplate>
        </ComboBox>
        <Button Content="Teste" Margin="384,63,12,79" Name="button1" Click="button1_Click" />
        
        <Label Content="Sigla" Height="28" HorizontalAlignment="Left" Margin="295,41,0,0" Name="label1" VerticalAlignment="Top" Width="58" Grid.ColumnSpan="2" />
        <TextBox Margin="297,65,116,77" Name="txtSigla" DataContext="{Binding ElementName=listView1, Path=SelectedItem}" Text="{Binding Path=id_estado}" />
        <Label Content="Estado" Height="28" HorizontalAlignment="Left" Margin="295,94,0,0" Name="label2" VerticalAlignment="Top" Width="58" Grid.ColumnSpan="2" />
        <TextBox Margin="297,116,12,26" Name="txtEstado" DataContext="{Binding ElementName=comboBox1, Path=SelectedItem}" Text="{Binding Path=estado}" />
      </Grid>
    </Window>
    
    

    sexta-feira, 13 de maio de 2011 12:31

Respostas

Todas as Respostas

  • William,

    Tente acrescentar um binding com a propriedade SelectedItem do ComboBox apontando para o SelectedItem do ListBox:

    <ComboBox ........ SelectedItem="{Binding ElementName=listView1, Path=SelectedItem}">


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    • Marcado como Resposta WilliamWMN sexta-feira, 13 de maio de 2011 15:02
    sexta-feira, 13 de maio de 2011 14:13
    Moderador
  • Deu certo!!!

    VALEU ANDRÉ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    Muito obrigado!!

    sexta-feira, 13 de maio de 2011 15:02
  • André, aproveitando essa pergunta, você sabe como faço para ligar o combo nome_razão a uma coluna do cmbEstadoCliente. Via C# eu tive que fazer isso para ler uma coluna:

    idEstadoCliente = ((DataRowView)cmbEstadoCliente.SelectedItem).Row.ItemArray[0].ToString()

    Como faria no XAML?

    Segue o código do Combo cmbNomeRazaoSocial:

                                <ComboBox AllowDrop="False" Grid.Column="2" Grid.ColumnSpan="2" Height="23" IsEditable="True" Margin="61,25,0,0" Name="cmbNomeRazaoCliente" TabIndex="0" ToolTip="Nome ou Razão Social" VerticalAlignment="Top" TextSearch.TextPath="nome_razao" ItemsSource="{Binding}">
                                    <ComboBox.ItemTemplate>
                                        <DataTemplate>
                                            <TextBlock Text="{Binding nome_razao}" />
                                        </DataTemplate>
                                    </ComboBox.ItemTemplate>
                                </ComboBox>

    Segue o código do Combo cmbEstadoCliente:

                                <ComboBox Grid.Column="2" Height="23" ItemsSource="{Binding}" Margin="0,172,81,0" Name="cmbEstadoCliente" TabIndex="4" ToolTip="Estado" VerticalAlignment="Top" >
                                    <ComboBox.ItemTemplate>
                                        <DataTemplate>
                                            <StackPanel Orientation="Horizontal">
                                                <TextBlock Text="{Binding id_estado}" />
                                                <TextBlock Text=" - "/>
                                                <TextBlock Text="{Binding estado}"/>
                                            </StackPanel>
                                        </DataTemplate>
                                    </ComboBox.ItemTemplate>
                                </ComboBox>

    Obs.: Quando eu ligo um text box ao cmbNomeRazao eu consigo pegar o id_estado.
    domingo, 15 de maio de 2011 17:06