我正在尝试将子控件中的元素属性绑定到父窗口中的元素属性,它不起作用..
以下是我正在尝试做的事情:
以下是不起作用的xaml:
CurrentDate="{Binding ElementName=TimeBar, Path=SelectionStart,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}"
感谢。
答案 0 :(得分:4)
在usercontrol中创建依赖项属性,然后在窗口中绑定它
类似的东西:你可以在stackoverflow上找到所有的DependencyProperty实现
<YourUsercontrol x:Name="uc">
<YourSomeControl CurrentDate="{Binding ElementName=uc, Path=MyDp}"/>
</YourUsercontrol>
xaml window
<Window>
<ElementInParent x:Name="eip" />
<YourUsercontrol MyDp="{Binding ElementName=eip, Path=PropertyFromElementInParent}"/>
答案 1 :(得分:0)
基于以下答案LINK,SelectionStart默认情况下不是Bindable Probperty,因此您需要创建附加行为或类似内容
答案 2 :(得分:0)
绑定ElementName和Relative Source是不正确的方法。 除了UserControl不知道Parent的ElementName,因为这两者在不同的XAML中。
一种方法是使用要绑定它的元素名称设置用户控件的数据上下文,然后使用普通绑定路径。
如下例所示: 在主窗口中,我们有一个文本框和一个用户控件。 我们使用文本框设置用户控件的数据上下文。
在用户控件中,我们绑定DataContext的Text属性(主要是主窗口的TextBox)。
<Window
xmlns:self="clr-namespace:experiments"
>
<StackPanel>
<TextBox x:Name="Name" Width="100"/>
<self:UserControl1 DataContext="{Binding ElementName=Name}"/>
</StackPanel>
</Window>
<UserControl x:Class="experiments.UserControl1">
<Grid>
<TextBlock Text="{Binding Path=Text}" Width="100" Background="AliceBlue" Height="50"/>
</Grid>
</UserControl>