我所要做的就是替换Combobox元素。每个Combobox都绑定在同一个Array上,所以应该不会有问题。**应该有一个按钮,它提供这个“Combobox replace”点击。**这里是Combobox XAML的一个(第二个是非常相似的):
<ComboBox
x:Name="from"
Grid.Column="1"
Grid.ColumnSpan="4"
Width="340"
Height="40"
Margin="18,0,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
DropDownClosed="from_DropDownClosed"
FontFamily="Montserrat"
FontSize="20"
IsSynchronizedWithCurrentItem="False"
ItemsSource="{Binding Angle}"
SelectedValue="{Binding Angle[0]}"
SelectionChanged="from_SelectionChanged" />
第二个Combobox的XAML:
<ComboBox
x:Name="to"
Grid.Row="2"
Grid.Column="1"
Grid.ColumnSpan="4"
Width="340"
Height="40"
Margin="18,0,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
DropDownClosed="to_DropDownClosed"
FontFamily="Montserrat"
FontSize="20"
IsSynchronizedWithCurrentItem="False"
ItemsSource="{Binding Angle}"
SelectedValue="{Binding Angle[1]}"
SelectionChanged="to_SelectionChanged" />
我的尝试是更改组合框SelectedItem的索引。但它的工作原理很奇怪。这样,第二个组合框的选择就改变了。但另一个没有任何变化。下面是我的代码版本(无法正常工作):
object item1 = from.SelectedItem;
object item2 = to.SelectedItem;
// Replacing them
from.SelectedItem = item2;
to.SelectedItem = item1;
下一页的图片:Page overview
1条答案
按热度按时间n7taea2i1#
我认为问题在于
SelectedItem
值总是看Angle[x]
值。尝试创建两个单独的属性
SelectedItem1
和SelectedItem2
,并将每个ComboBox
的SelectedItem
绑定到相应的属性。我还建议您使用
SelectedItem
属性而不是SelectionChanged
事件,以保留MVVM原则(如果您的事件代码需要访问ViewModel
数据)。此外,您可以使用
ObservableCollection<MyClassOrType>
而不是数组来简化操作。就像这样:
MyClassOrType
是存储在集合中的任何对象类型(int、float、类等)。然后你可以像这样绑定你的
ComboBox
:下一篇:
Button
为了保留MVVM原则,你应该绑定到ICommand
实现,以便在ViewModel
中执行代码,而不是视图本身,因为你是在操纵数据,而不仅仅是视图属性。在按钮命令绑定中,您可以执行以下操作:
后面的代码: