WPF绑定问题

WPF绑定问题,wpf,binding,treeview,actualwidth,Wpf,Binding,Treeview,Actualwidth,我正在尝试自定义TreeView控件。当用户在TreeView中选择项目时,我需要将SelectedItem的实际宽度存储在项目的标签中: <Style x:Key="{x:Type TreeViewItem}" TargetType="{x:Type TreeViewItem}"> <!-- ... --> <Setter Property="Template"> <Set

我正在尝试自定义
TreeView
控件。当用户在
TreeView
中选择项目时,我需要将
SelectedItem
实际宽度
存储在项目的标签中:

 <Style x:Key="{x:Type TreeViewItem}" TargetType="{x:Type TreeViewItem}">
           <!-- ... -->
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TreeViewItem}">
                        <Grid ShowGridLines="True">

                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition />
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition />
                                <RowDefinition />
                            </Grid.RowDefinitions>

                            <Rectangle x:Name="rect" />

                            <ContentPresenter x:Name="PART_Header" ContentSource="Header" Margin="5" />         

                            <ItemsPresenter x:Name="ItemsHost" Grid.Row="1" Grid.Column="1" />
                            <!-- ... -->       
                        </Grid>

                        <ControlTemplate.Triggers>
                            <Trigger Property="IsSelected" Value="true">
                                <Setter Property="Tag" Value="{Binding ElementName=rect, Path=ActualWidth}" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
现在的问题是item.Tag总是空的。这是我的装订有问题吗?还是应该用另一种方式做呢?

试试:

<Setter Property="Tag" Value="{Binding Path=ActualWidth, RelativeSource={x:Static RelativeSource.Self}}" />


尝试在输出窗口中查找数据绑定错误没有报告任何数据绑定错误。显然,按ElementName:,这是不可能的。并且没有“FindVisualChildByType”标记扩展。因此,您需要另一种解决方法。您试图解决什么问题?我正在尝试将TreeViewItem内容的宽度存储到项目的Tag属性中。要做到这一点,我需要存储矩形'rect'的实际宽度或第一列定义的实际宽度。这一个可以工作,但它没有提供我需要的值--它绑定到项的实际宽度,这等于它将被放置的树视图的宽度。如果我想要项目内容的实际宽度,我需要将其绑定到矩形“rect”或第一列定义。
<Setter Property="Tag" Value="{Binding Path=ActualWidth, RelativeSource={x:Static RelativeSource.Self}}" />