C# 将高度绑定到另一个向后工作的控件

C# 将高度绑定到另一个向后工作的控件,c#,wpf,C#,Wpf,我有以下代码: 代码隐藏: public MainWindow() { InitializeComponent(); DispatcherTimer timer = new DispatcherTimer(); timer.Interval = new TimeSpan(0, 0, 5); timer.Tick += Timer_Tick; timer.Start(); } private void Timer_Tick(object sender, E

我有以下代码:

代码隐藏:

public MainWindow()
{
    InitializeComponent();
    DispatcherTimer timer = new DispatcherTimer();
    timer.Interval = new TimeSpan(0, 0, 5);
    timer.Tick += Timer_Tick;
    timer.Start();
}

private void Timer_Tick(object sender, EventArgs e)
{
    List<ItemType> list = new List<ItemType>();
    list.Add(new ItemType() { typeId = 263, typeName = "Test A" });
    list.Add(new ItemType() { typeId = 264, typeName = "Test B" });
    itemTreeView.ItemsSource = list;
}
public主窗口()
{
初始化组件();
调度程序计时器=新调度程序();
timer.Interval=新的时间跨度(0,0,5);
timer.Tick+=定时器_Tick;
timer.Start();
}
私有无效计时器(对象发送方、事件参数)
{
列表=新列表();
添加(newitemtype(){typeId=263,typeName=“testa”});
添加(newitemtype(){typeId=264,typeName=“Test B”});
itemTreeView.ItemsSource=列表;
}
xaml:


在早期的开发中,它工作得很好,但现在,每当它似乎更新得更频繁时,我会更加努力地推动它,绑定似乎会向后工作,将
TextBlock
实际高度更改为图像的高度。我添加了
Mode=“OneWay
部分,认为这可能有助于防止出现这种情况,但这种情况仍在发生。当图像和面板的高度通常为16像素时,我得到的结果是64像素(我不想设置固定值,以防用户设置了更大的字体大小。在第二次重新加载时,它似乎停止收缩图像)。
对typeImage的绑定将绑定到一个64x64
BitmapSource

我可以通过向
添加
VerticalAlignment=“Top”
来修复它,以防止在首先加载图像时文本块拉伸。

”它似乎更新得更频繁,绑定似乎在向后工作,将文本块的实际高度更改为图像的高度"--看起来可能是这样,但我确信不是这样。
实际高度
属性是只读的,因此不可能通过绑定进行设置。
文本块
高度可能会随着容器的增加而增加,以适应
图像
的自然高度。不幸的是,在您的任务中没有一个好的设置ion,其他人不可能重现这种行为,更不用说提出修复建议。请改进您的问题。@PeterDuniho终于有机会接受您的建议。希望问题现在更好。
<TreeView DockPanel.Dock="Bottom" x:Name="itemTreeView" Margin="0">
   <TreeView.Resources>
        <DataTemplate DataType="{x:Type local:ItemType}">
            <StackPanel Orientation="Horizontal">
                 <Image Source="{Binding typeImage}" Height="{Binding ActualHeight, ElementName=tname, Mode=OneWay}"/>
                 <TextBlock Text="{Binding ActualHeight, ElementName=tname}"/>
                 <TextBlock x:Name="tname" Text="{Binding typeName}"  ToolTip="{Binding description}"/>
             </StackPanel>
         </DataTemplate>
    </TreeView.Resources>