2010-04-20 2 views
3

Привет может кто-нибудь сказать ..how привязать выбранный элемент в списке в текстовое поле .. я ElementName = Path = .. Но не отображается ничего ...Bind выбранного элемента в текстовом поле

+1

Не могли бы вы предоставить весь код XAML для вашей привязки? 'ElementName' и' Path' на самом деле не являются подробной информацией. Интересная часть - это значение, которое вы присваиваете этим свойствам. – gehho

ответ

6

Это как SelectedItem.Content можно сделать

<StackPanel> 
<TextBlock Width="248" Height="24" Text="Colors:" 
    TextWrapping="Wrap"/> 
<ListBox x:Name="lbColor" Width="248" Height="56"> 
    <ListBoxItem Content="Blue"/> 
    <ListBoxItem Content="Green"/> 
    <ListBoxItem Content="Yellow"/> 
    <ListBoxItem Content="Red"/> 
    <ListBoxItem Content="Purple"/> 
    <ListBoxItem Content="Orange"/> 
</ListBox> 
<TextBlock Width="248" Height="24" Text="You selected color:" /> 
<TextBlock Width="248" Height="24"> 
    <TextBlock.Text> 
     <Binding ElementName="lbColor" Path="SelectedItem.Content"/> 
    </TextBlock.Text> 
</TextBlock> 

5

набора DataContext сетки по SelectedItem из Listbox, а затем сделать нормальный Binding, как показано ниже

<Grid> 
<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="3*"></ColumnDefinition> 
    <ColumnDefinition Width="5*"></ColumnDefinition> 
</Grid.ColumnDefinitions> 

<Grid> 
    <Grid.RowDefinitions> 
    <RowDefinition Height="Auto"></RowDefinition> 
    <RowDefinition Height="*"></RowDefinition> 
    </Grid.RowDefinitions> 

    <Button Margin="7,7,7,0" Padding="2" Click="cmdGetProducts_Click">Get Products</Button> 
    <ListBox Grid.Row="1" Margin="7,3,7,10" Name="lstProducts" HorizontalContentAlignment="Stretch" SnapsToDevicePixels="True"> 
    <ListBox.ItemContainerStyle> 
     <Style> 
     <Setter Property="Control.Padding" Value="0"></Setter> 
     <Style.Triggers> 
      <Trigger Property="ListBoxItem.IsSelected" Value="True"> 
      <Setter Property="ListBoxItem.Background" Value="DarkRed" /> 
      </Trigger> 
     </Style.Triggers> 
     </Style> 
    </ListBox.ItemContainerStyle>  
    <ListBox.ItemTemplate> 
     <DataTemplate> 
     <Grid Margin="0" Background="White"> 
     <Border Margin="5" BorderThickness="1" BorderBrush="SteelBlue" 
       CornerRadius="4"> 
      <Grid Margin="3"> 
      <Grid.RowDefinitions> 
       <RowDefinition></RowDefinition> 
       <RowDefinition></RowDefinition> 
      </Grid.RowDefinitions> 
      <TextBlock FontWeight="Bold" Text="{Binding Path=ModelNumber}"></TextBlock> 
      <TextBlock Grid.Row="1" Text="{Binding Path=ModelName}"></TextBlock> 
      </Grid> 
     </Border> 
     </Grid> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
    </ListBox> 


</Grid> 

<GridSplitter Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Stretch" 
       Width="5"></GridSplitter> 

<Border Grid.Column="1" Padding="7" Margin="7" Background="LightSteelBlue"> 
    <Grid DataContext="{Binding ElementName=lstProducts, Path=SelectedItem}" > 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto"></ColumnDefinition> 
     <ColumnDefinition></ColumnDefinition> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"></RowDefinition> 
     <RowDefinition Height="Auto"></RowDefinition> 
     <RowDefinition Height="Auto"></RowDefinition> 
     <RowDefinition Height="Auto"></RowDefinition> 
     <RowDefinition Height="*"></RowDefinition> 
    </Grid.RowDefinitions> 

    <TextBlock Margin="7">Model Number:</TextBlock> 
    <TextBox Margin="5" Grid.Column="1" Text="{Binding Path=ModelNumber}"></TextBox> 
    <TextBlock Margin="7" Grid.Row="1">Model Name:</TextBlock> 
    <TextBox Margin="5" Grid.Row="1" Grid.Column="1" Text="{Binding Path=ModelName}"></TextBox> 
    <TextBlock Margin="7" Grid.Row="2">Unit Cost:</TextBlock> 
    <TextBox Margin="5" Grid.Row="2" Grid.Column="1" Text="{Binding Path=UnitCost}"></TextBox> 
    <TextBlock Margin="7,7,7,0" Grid.Row="3">Description:</TextBlock> 
    <TextBox Margin="7" Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="2" 
      TextWrapping="Wrap" VerticalScrollBarVisibility="Visible" Text="{Binding Path=Description}"></TextBox> 

    </Grid> 
</Border> 

+0

Спасибо, что он работает правильно ... но как можно сделать то же самое без указания TextBox внутри GRID .. Я имел в виду, например, внутри привязки текстового поля ElementName как ListBoxName и Path as Path = SelectedItem.Content (но его не работает .. вы можете мне сказать .. спасибо – csensoft

+0

Я отправил образец для SelectedItem.Content в качестве нового ответа –

Смежные вопросы