Usuário com melhor resposta
Erro de Binding

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>
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
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
-
-
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" >
Obs.: Quando eu ligo um text box ao cmbNomeRazao eu consigo pegar o id_estado.
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding id_estado}" />
<TextBlock Text=" - "/>
<TextBlock Text="{Binding estado}"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>