C# ';指定的元素已经是逻辑子元素';固定

C# ';指定的元素已经是逻辑子元素';固定,c#,wpf,xaml,C#,Wpf,Xaml,我有自己的自定义组合框,最后一项是带有命令的按钮: 代码: 风格: <Style TargetType="{x:Type controls:CustomComboBox}"> <Style.Resources> <Style TargetType="{x:Type Button}"> <Setter Property="OverridesDefaultStyle" Value="tr

我有自己的自定义组合框,最后一项是带有命令的按钮:

代码:

风格:

<Style TargetType="{x:Type controls:CustomComboBox}">
        <Style.Resources>
            <Style TargetType="{x:Type Button}">
                <Setter Property="OverridesDefaultStyle" Value="true"/>
                <Setter Property="VerticalContentAlignment" Value="Center"/>
                <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                <Setter Property="SnapsToDevicePixels" Value="true"/>
                <Setter Property="Height" Value="16" />
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type Button}">
                            <TextBlock Text="{TemplateBinding Content}" Background="Transparent" Foreground="#CCCCCD" />
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Style.Resources>
        <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type controls:CustomComboBox}">
                    <StackPanel>
                        <ComboBox
                            SelectedItem="{Binding Path=SelectedItem, Mode=TwoWay,
                                    RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type controls:CustomComboBox}},
                                        UpdateSourceTrigger=PropertyChanged}"
                            ItemsSource="{Binding ItemsSource, Mode=OneWay,
                                    RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type controls:CustomComboBox}},
                                        UpdateSourceTrigger=PropertyChanged}">
                            <ComboBox.ItemContainerStyle>
                                <Style TargetType="{x:Type ComboBoxItem}">
                                    <Setter Property="ContentTemplate">
                                        <Setter.Value>
                                            <DataTemplate>
                                                <StackPanel>
                                                    <TextBlock Style="{StaticResource TextBlockDimmed}" Text="{Binding Mode=OneWay}" />
                                                </StackPanel>
                                            </DataTemplate>
                                        </Setter.Value>
                                    </Setter>
                                    <Style.Triggers>
                                        <DataTrigger
                                            Binding="{Binding Converter={converters:ComboBoxItemIndexToStringConverter},
                                                RelativeSource={RelativeSource Self}}" Value="IsLastItem">
                                            <Setter Property="ContentTemplate">
                                                <Setter.Value>
                                                    <DataTemplate>
                                                        <StackPanel>
                                                            <Button Content="{Binding}"
                                                                  Command="{Binding ButtonCommand,
                                                                RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type controls:CustomComboBox}}}" />
                                                        </StackPanel>
                                                    </DataTemplate>
                                                </Setter.Value>
                                            </Setter>
                                        </DataTrigger>
                                    </Style.Triggers>
                                </Style>
                            </ComboBox.ItemContainerStyle>
                        </ComboBox>
                    </StackPanel>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

我猜XAML样式中存在问题,但我不确定问题到底是什么。

CreateNewAreaCommands的代码是什么我正在使用caliburn.micro。代码是:
private void CreateNewAreaExecute(object param){var viewModel=new addorrenameaviewmodel(事件聚合器、区域服务、NetworkResources.AddAreaDialogName);windowManager.ShowDialog(viewModel);}
这里有相同的问题,您找到解决方法了吗?
<Style TargetType="{x:Type controls:CustomComboBox}">
        <Style.Resources>
            <Style TargetType="{x:Type Button}">
                <Setter Property="OverridesDefaultStyle" Value="true"/>
                <Setter Property="VerticalContentAlignment" Value="Center"/>
                <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                <Setter Property="SnapsToDevicePixels" Value="true"/>
                <Setter Property="Height" Value="16" />
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type Button}">
                            <TextBlock Text="{TemplateBinding Content}" Background="Transparent" Foreground="#CCCCCD" />
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Style.Resources>
        <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type controls:CustomComboBox}">
                    <StackPanel>
                        <ComboBox
                            SelectedItem="{Binding Path=SelectedItem, Mode=TwoWay,
                                    RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type controls:CustomComboBox}},
                                        UpdateSourceTrigger=PropertyChanged}"
                            ItemsSource="{Binding ItemsSource, Mode=OneWay,
                                    RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type controls:CustomComboBox}},
                                        UpdateSourceTrigger=PropertyChanged}">
                            <ComboBox.ItemContainerStyle>
                                <Style TargetType="{x:Type ComboBoxItem}">
                                    <Setter Property="ContentTemplate">
                                        <Setter.Value>
                                            <DataTemplate>
                                                <StackPanel>
                                                    <TextBlock Style="{StaticResource TextBlockDimmed}" Text="{Binding Mode=OneWay}" />
                                                </StackPanel>
                                            </DataTemplate>
                                        </Setter.Value>
                                    </Setter>
                                    <Style.Triggers>
                                        <DataTrigger
                                            Binding="{Binding Converter={converters:ComboBoxItemIndexToStringConverter},
                                                RelativeSource={RelativeSource Self}}" Value="IsLastItem">
                                            <Setter Property="ContentTemplate">
                                                <Setter.Value>
                                                    <DataTemplate>
                                                        <StackPanel>
                                                            <Button Content="{Binding}"
                                                                  Command="{Binding ButtonCommand,
                                                                RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type controls:CustomComboBox}}}" />
                                                        </StackPanel>
                                                    </DataTemplate>
                                                </Setter.Value>
                                            </Setter>
                                        </DataTrigger>
                                    </Style.Triggers>
                                </Style>
                            </ComboBox.ItemContainerStyle>
                        </ComboBox>
                    </StackPanel>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
<controls:CustomComboBox Grid.Column="1"
                                     SelectedItem="{Binding Path=SelectedAreaName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                                     ButtonCommand="{Binding CreateNewAreaCommand}"
                                     ItemsSource="{Binding AreasNamesList, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" />
'Specified element is already the logical child of another element. Disconnect it first.'