弹出窗口绑定问题

时间:2018-05-02 15:03:20

标签: c# wpf xaml data-binding dependency-properties

我制作了一个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的另一个实例中的另外三个。

为什么会这样?

0 个答案:

没有答案