我制作了一个UserControl
,其中包含三个切换按钮,每个切换按钮都绑定到同一ObservableCollection
的不同项目。 UserControl
稍后在Popup
内使用。
出于某种原因,当我切换其中一个时,在另一个弹出窗口中UserControl
的另一个实例上,它也会切换。
ToggleButton
中的三个UserControl
看起来像这样:
<DockPanel DockPanel.Dock="Top" LastChildFill="False" Margin="0, 0, 0, 8">
<TextBlock DockPanel.Dock="left" Margin="0" Text="ROTATION" Foreground="{StaticResource BaseText}" VerticalAlignment="Center"/>
<ToggleButton DockPanel.Dock="Right" Height="25" Width="25" Tag="3" IsChecked="{Binding RotationAxis[2], ElementName=RotationPanel, Converter={StaticResource BoolToString}, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Click="ToggleButton_Click" Content="Z"/>
<ToggleButton IsChecked="{Binding RotationAxis[1], ElementName=RotationPanel, Converter={StaticResource BoolToString}, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
<ToggleButton IsChecked="{Binding RotationAxis[0], ElementName=RotationPanel, Converter={StaticResource BoolToString}, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
</DockPanel>
他们绑定到DependencyProperty
:
public static readonly DependencyProperty RotationAxisProperty =
DependencyProperty.Register("RotationAxis", typeof(ObservableCollection<string>), typeof(RotationSelector), new PropertyMetadata(new ObservableCollection<string> { "True", "True", "True" }));
[Bindable(true)]
public ObservableCollection<string> RotationAxis
{
get { return (ObservableCollection<string>)this.GetValue(RotationAxisProperty); }
set { this.SetValue(RotationAxisProperty, value); }
}
UserControl
然后在我的应用中使用了两次:
<Popup x:Name="SpritePopupRotation">
<CMiX:RotationSelector x:Name="SpriteSelectedRotation" RotationAxis="{Binding Datacontext.SpriteRotationAxis, ElementName=Ch_Parameters, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" AxisChanged="RotationSelector_AxisChanged"/>
</Popup>
<Popup x:Name="MaskPopupRotation">
<CMiX:RotationSelector x:Name="MaskSelectedRotation" RotationAxis="{Binding Datacontext.MaskRotationAxis, ElementName=Ch_Parameters, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" AxisChanged="RotationSelector_AxisChanged"/>
</Popup>
现在,当我启动我的应用时,来自一个ToggleButton
的三个UserControl
看起来就像绑定到UserControl
的另一个实例中的另外三个。
为什么会这样?