在我的应用程序中,我有HierarchicalDataTemplate
,如下所示:
<HierarchicalDataTemplate DataType="{x:Type model:ParentDisplayTreeItem}" ItemsSource="{Binding Children}">
<CheckBox IsChecked="{Binding IsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<CheckBox.Content>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="16"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Source="{Binding Image}" VerticalAlignment="Center"/>
<TextBlock Grid.Column="1" Text="{Binding Display}" VerticalAlignment="Center" Margin="2,1"/>
</Grid>
</CheckBox.Content>
</CheckBox>
</HierarchicalDataTemplate>
DataTemplate
看起来像:
<DataTemplate DataType="{x:Type model:ChildDisplayTreeItem}">
<CheckBox IsChecked="{Binding IsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<CheckBox.Content>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="16"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Source="{Binding Image}" VerticalAlignment="Center"/>
<TextBlock Grid.Column="1" Text="{Binding Display}" VerticalAlignment="Center" Margin="2,1"/>
</Grid>
</CheckBox.Content>
</CheckBox>
</DataTemplate>
正如您所看到的,两者的内容与CheckBox
相同。
是否可以将CheckBox
移动到资源并从那里使用它?
我已尝试将其作为ControlTemplate
提供给资源,例如:
<ControlTemplate x:Key="CheckBoxControlTemplate">
<CheckBox IsChecked="{Binding IsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<CheckBox.Content>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="16"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Source="{Binding Image}" VerticalAlignment="Center"/>
<TextBlock Grid.Column="1" Text="{Binding Display}" VerticalAlignment="Center" Margin="2,1"/>
</Grid>
</CheckBox.Content>
</CheckBox>
</ControlTemplate>
并使用它:
<HierarchicalDataTemplate DataType="{x:Type model:ParentDisplayTreeItem}" ItemsSource="{Binding Children}">
<StaticResource ResourceKey="CheckBoxControlTemplate"/>
</HierarchicalDataTemplate>
但是我用这种方法得到了编译错误。
答案 0 :(得分:0)
是的,你可以这样做。它看起来应该是这样的。
<HierarchicalDataTemplate DataType="{x:Type model:ParentDisplayTreeItem}"
ItemsSource="{Binding Children}">
<CheckBox Template="{StaticResource CheckBoxControlTemplate}" />
</HierarchicalDataTemplate>