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的绑定将绑定到一个64x64BitmapSource
我可以通过向
添加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>