我有以下代码:
代码背后的代码: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;
}
XAML:
<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>
它在早期开发中运行良好,但现在我正在更加努力地推动事情,只要它更频繁地更新,绑定似乎会向后工作,将ActualHeight
的{{1}}更改为图像的高度。我添加TextBlock
部分认为可能有助于防止这种情况,但它仍在发生。我最终得到的图像和面板高度为64像素,一般看起来是16(我不想设置一个固定的值,以防用户设置更大的字体大小。它似乎停止缩小第二个图像重装。
对typeImage的绑定将绑定到64x64 Mode="OneWay
答案 0 :(得分:0)
我能够通过向VerticalAlignment="Top"
添加<TextBlock x:Name="tname" Text="{Binding typeName}" ToolTip="{Binding description}"/>
来解决此问题,以防止在首先加载图片时文本块被拉伸。