我正在尝试将我选择的组合框值=设置为文本框值。我希望只有在可能的情况下才能使用xaml。
<ListView x:Name="ExampleLV" ItemsSource="{Binding Data.Example1Collection}">
<ListView.View>
<GridView>
<GridViewColumn Header="Column1" DisplayMemberBinding="{Binding Values[0].Value}"/>
</GridView>
</ListView.View>
</ListView>
<ComboBox Name="ExampleCB" ItemsSource="{Binding Data.Example2Collection}"
SelectedItem="{Binding ElementName=ExampleLV,
Path=SelectedItem.Values[0].Value, Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}">
<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem">
<Setter Property="Tag" Value="{Binding ElementName=ExampleLV, Path=SelectedItem.Tag, Mode=TwoWay}"/>
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
问题不在于所选的列表项目没有更新,而是选择的组合框更新不会更新以匹配列表视图所选项目。
是的,Values [0] .Value具有INotifyPropertyChanged接口。
答案 0 :(得分:0)
我还不知道你是否需要绑定到listview(问题主题)或文本框(问题正文)。以下是两种纯XAML解决方案:
xmlns:sys="clr-namespace:System;assembly=mscorlib"
<StackPanel>
<ListView x:Name="ExampleLV" SelectedValue="{Binding ElementName=Cbox, Path=SelectedValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<ListView.ItemsSource>
<x:Array Type="{x:Type sys:String}">
<sys:String>Test1</sys:String>
<sys:String>Test2</sys:String>
<sys:String>Test3</sys:String>
</x:Array>
</ListView.ItemsSource>
<ListView.View>
<GridView>
<GridViewColumn Header="Column1"/>
</GridView>
</ListView.View>
</ListView>
<TextBox Text="{Binding ElementName=Cbox, Path=SelectedValue, Mode=TwoWay, UpdateSourceTrigger=LostFocus}"/>
<ComboBox x:Name="Cbox">
<ComboBox.ItemsSource>
<x:Array Type="{x:Type sys:String}">
<sys:String>Test1</sys:String>
<sys:String>Test2</sys:String>
<sys:String>Test3</sys:String>
</x:Array>
</ComboBox.ItemsSource>
</ComboBox>
</StackPanel>