我从WPF开始,我有一个非常简单的问题:
我有一个TextBlock和一个共享相同DataContext的Listbox。 ListBox的ItemsSource设置为指向DataContext的一个属性,它是一个ObservableCollection。我希望TextBlock包含Listbox的选定项。一些代码:
View view = new View();
view.DataContext = new ViewModel();
view.Show();
<TextBlock Name="textBox1" Grid.Row="0" Grid.Column="0" Margin="1" Text="{Binding ¿xxx?}"></TextBlock>
<ListBox Name="listBox1" Grid.Row="1" Grid.ColumnSpan="2" Margin="1" ItemsSource="{Binding Model.BinariesToDeploy}" IsSynchronizedWithCurrentItem="True" />
希望清楚。
答案 0 :(得分:2)
如果您确实想要使用同步,则需要绑定到将由ListBox或IsSynchronizedWithCurrentItem
设置为true
的任何其他控件设置的集合的当前项,所以使用/
:
<TextBlock Text="{Binding Model.BinariesToDeploy/}" />
当源是集合视图时,可以使用斜杠(/)指定当前项。例如,子句Path = /设置绑定到视图中的当前项。当源是集合时,此语法指定默认集合视图的当前项。
当前项目由CollectionView
管理,Kaxaml是原始集合之上的一个层,CollectionViews也可用于过滤,排序和分组。
一个例子(可在{{3}}中查看):
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Page.Resources>
<x:Array x:Key="items" Type="{x:Type Label}">
<Label Content="Apple" Tag="Fruit"/>
<Label Content="Pear" Tag="Fruit"/>
<Label Content="Orange" Tag="Fruit"/>
<Label Content="Lime" Tag="Fruit"/>
<Label Content="Tomato" Tag="Vegetable"/>
<Label Content="Radish" Tag="Vegetable"/>
<Label Content="Lettuce" Tag="Vegetable"/>
</x:Array>
</Page.Resources>
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<StackPanel>
<ListBox IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding Source={StaticResource items}}"/>
<!-- Binds to CurrentItem.Content -->
<ContentControl Content="{Binding /Content,Source={StaticResource items}}"/>
</StackPanel>
</ScrollViewer>
</Page>
答案 1 :(得分:1)
尝试这样的事情
Text = "{Binding ElementName=listBox1, Path=SelectedValue.Content}"