我使用了ListView和observable集合,下面是它的数据模板。我已经将矩形的宽度绑定到相对面板,但是它不起作用
<DataTemplate>
<RelativePanel x:Name="Tab" SizeChanged="{x:Bind Tab_SizeChanged}">
<StackPanel>
<TextBox Text="{Binding TabName, Mode=TwoWay}">
</TextBox>
</StackPanel>
<Rectangle Fill="{Binding Color}" RelativePanel.AlignBottomWithPanel="True" Width="{Binding ElementName=Tab,Path=Width}">
</Rectangle>
</RelativePanel></DataTemplate>
我也尝试过Width="{Binding RectWidth}"
,当相对面板尺寸变化时,我正在更新RectWidth
文件后面的代码如下所示
public double RectWidth{get;set;}
public void Tab_SizeChanged(object sender, SizeChangedEventArgs e)
{
RectWidth = e.NewSize.Width;
}
他们两个都不工作。
绑定源属性设置动态应该假设你实现INotifyPropertyChanged
和提高PropertyChanged
事件通知视图的更新。
但是由于您已经为Panel
处理了SizeChanged
事件,您可以直接在处理程序中设置Rectangle
的Width
:
public void Tab_SizeChanged(object sender, SizeChangedEventArgs e)
{
RelativePanel panel = (RelativePanel)sender;
Rectangle rectangle = panel.Children[1] as Rectangle;
if (rectangle != null)
rectangle.Width = e.NewSize.Width;
}