我希望使用附加属性将命令分配给嵌入在树视图中的组合框的选择更改事件。我正在尝试在树的分层数据模板中设置附加属性,但该命令未设置,并且在组合框中的项目更改时不会触发。
我发现直接在数据模板之外的组合框上设置附加属性可以正常工作;
这是我尝试在模板中设置属性的方式:
<HierarchicalDataTemplate x:Key="template1"
ItemsSource="{Binding Path=ChildColumns}">
<Border
Background="{StaticResource TreeItem_Background}"
BorderBrush="Blue"
BorderThickness="2"
CornerRadius="5"
Margin="2,5,5,2"
HorizontalAlignment="Left" >
<Grid>
<Grid.ColumnDefinitions >
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock MinWidth="80" HorizontalAlignment="Left" Grid.Column="0" Margin="5,2,2,2" Grid.Row ="0"
Text="{Binding Path=ColName}"/>
<ComboBox Name="cboColType" Grid.Column="1"
HorizontalAlignment="Right"
ItemsSource="{Binding Source={StaticResource dataFromEnum}}"
SelectedItem="{Binding Path=ColumnType}"
Margin="2,2,2,2"
local:ItemSelectedBehavior.ItemSelected="{Binding Path=LoadConfigCommand}"
/>
</Grid>
</Border>
</HierarchicalDataTemplate>
我也尝试过创造一种风格
<Style x:Key="childItemStyle" TargetType="{x:Type FrameworkElement}">
<Setter Property="local:ItemSelectedBehavior.ItemSelected" Value="{Binding Path=LoadConfigCommand}" />
</Style>
并将 itemcontainerstyle 设置为分层数据模板中的样式..仍然没有运气..
<HierarchicalDataTemplate>
...
<ComboBox Name="cboColType" Grid.Column="1"
HorizontalAlignment="Right"
ItemsSource="{Binding Source={StaticResource dataFromEnum}}"
SelectedItem="{Binding Path=ColumnType}"
Margin="2,2,2,2"
ItemContainerStyle={StaticeResource childItemStyle}"
/>
...
</HierarchicalDataTemplate>
我仍然在学习很多关于 WPF 的知识,所以我假设分层数据模板有一些特殊之处,不允许设置附件 dproperty。我在论坛中找到了类似的帖子,并尝试按照上面的方法实现他们的解决方案,但经过一天的搜索和试验但没有运气,我希望有人对此有所了解......