WPF绑定到父窗口中的元素

时间:2013-12-03 07:18:00

标签: c# wpf xaml

我正在尝试将子控件中的元素属性绑定到父窗口中的元素属性,它不起作用..

以下是我正在尝试做的事情: enter image description here

以下是不起作用的xaml:

CurrentDate="{Binding ElementName=TimeBar, Path=SelectionStart,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}" 

感谢。

3 个答案:

答案 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>
相关问题