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.'