gpt4 book ai didi

.net - 通过 ElementName 将 UserControl 属性绑定(bind)到其子级会导致绑定(bind)错误

转载 作者:行者123 更新时间:2023-12-03 18:35:20 25 4
gpt4 key购买 nike

我有以下 XAML:

<UserControl x:Class="WpfWindow.MyControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.RenderTransform>
<TranslateTransform X="{Binding ElementName=MySlider, Path=ActualWidth}" />
</UserControl.RenderTransform>
<Grid>
<Slider x:Name="MySlider" Canvas.Left="41" Canvas.Top="86" Height="23" Width="100" Minimum="0" Maximum="100"/>
</Grid>
</UserControl>

当我尝试使用带有 UserControl 的窗口时,我得到:
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'ElementName=MySlider'. BindingExpression:Path=ActualWidth; DataItem=null; target element is 'TranslateTransform' (HashCode=53368240); target property is 'X' (type 'Double')

这特别奇怪,因为直接在窗口中使用相同的代码可以完美地工作。

现在我已经通过在代码中设置绑定(bind)解决了这个问题,但是,我不知道为什么我的版本不起作用,如果可能的话,我宁愿把所有东西都放在 XAML 中。

谢谢!

最佳答案

我注意到有时在 Window 上使用 ElementName 设置绑定(bind)时/UserControl等声明的顺序很重要。我不确定原因,但如果您声明 Grid设置前<UserControl.RenderTransform>我认为它会工作

<UserControl ...>
<Grid Background="Red">
<Slider x:Name="MySlider" Canvas.Left="41" Canvas.Top="86" Height="23" Width="100" Minimum="0" Maximum="100"/>
</Grid>
<UserControl.RenderTransform>
<TranslateTransform X="{Binding ElementName=MySlider, Path=ActualWidth}" />
</UserControl.RenderTransform>
</UserControl>

关于.net - 通过 ElementName 将 UserControl 属性绑定(bind)到其子级会导致绑定(bind)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5056499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com