将UserControl属性绑定到Window属性

记忆删除

我正在努力解决一些具有约束力的问题。我有一个带有TextBlock的UserControl。TextBlock的文本绑定到一个属性。在窗口中使用UserControl并用一些文本设置属性时,一切都会按预期进行。但是,当我将该属性绑定到窗口中的另一个属性时,什么也没有发生。这是显示问题的示例:

UserControl xaml:

<UserControl x:Class="TestBinding.UserControl1"
         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">
<TextBlock Text="{Binding SomeText}"/>

UserControl代码:

public partial class UserControl1 : UserControl
{
    public static readonly DependencyProperty SomeTextProperty = DependencyProperty.Register("SomeText", typeof(string), typeof(UserControl1), new PropertyMetadata("Control Default Text"));

    public string SomeText
    {
        get { return (string)this.GetValue(SomeTextProperty); }
        set { this.SetValue(SomeTextProperty, value); }
    }

    public UserControl1()
    {
        this.DataContext = this;

        InitializeComponent();
    }
}

窗口xaml:

<Window x:Class="TestBinding.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:TestBinding"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="1*"/>
        <RowDefinition Height="1*"/>
    </Grid.RowDefinitions>
    <local:UserControl1 Grid.Row="0" Grid.Column="0"/>
    <local:UserControl1 Grid.Row="1" Grid.Column="0" SomeText="Another Text" />
    <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding SomeText}"/>
    <local:UserControl1 Grid.Row="1" Grid.Column="1" SomeText="{Binding SomeText}" />
</Grid>

窗口代码:

public partial class MainWindow : Window
{
    public static readonly DependencyProperty SomeTextProperty = DependencyProperty.Register("SomeText", typeof(string), typeof(MainWindow), new PropertyMetadata("Window Default Text"));

    public string SomeText
    {
        get { return (string)this.GetValue(SomeTextProperty); }
        set { this.SetValue(SomeTextProperty, value); }
    }

    public MainWindow()
    {
        this.DataContext = this;

        InitializeComponent();
    }
}

我希望在右下角看到的是“窗口默认文本”,但得到的是“控件默认文本”。

谢谢你的帮助

dkozl

当您设置UserControl1.SomeText为文本时,它可以工作,因为绑定上下文无关紧要,但是当您使用绑定并执行

public UserControl1()
{
    this.DataContext = this;
    ....
}

DataContext将通过继承来覆盖通常存在的内容,并更改UserControl1绑定的上下文删除上面的行,并按如下所示更改XAML:

<UserControl ... x:Name="myUserControl">
    <TextBlock Text="{Binding ElementName=myUserControl, Path=SomeText}"/>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将属性绑定到用户控件

来自分类Dev

将控件的“启用”属性绑定到变量

来自分类Dev

将Xceed DataGrid的列属性绑定到viewmodel属性属性

来自分类Dev

将文本绑定到附加属性

来自分类Dev

将ListBox.SelectedItem绑定到属性

来自分类Dev

将属性绑定到DataTemplateSelector

来自分类Dev

将单选按钮绑定到枚举属性

来自分类Dev

DataTrigger绑定到UserControl依赖项属性

来自分类Dev

AngularJS将类属性绑定到模型

来自分类Dev

在XAML中将动作绑定到UserControl的属性

来自分类Dev

将AngularJS绑定到MVC ViewModel属性

来自分类Dev

将属性绑定到itemssource集合的属性

来自分类Dev

将事件绑定到属性的替代方法

来自分类Dev

将数字属性绑定到布尔属性

来自分类Dev

UserControl绑定到Model属性

来自分类Dev

将组合绑定到本地枚举属性

来自分类Dev

WPF将Usercontrol属性绑定到主窗口

来自分类Dev

将属性绑定到现有绑定

来自分类Dev

将Xceed DataGrid的列属性绑定到viewmodel属性属性

来自分类Dev

麻烦设置绑定到UserControl的ImageSource依赖项属性

来自分类Dev

将对象属性绑定到UserControl DP错误

来自分类Dev

绑定到动态创建的DataTemplate UserControl属性

来自分类Dev

将扩展文本框中的依赖项属性绑定到UserControl

来自分类Dev

无法绑定到主窗口中的usercontrol属性

来自分类Dev

将类属性绑定到MVVM中的UserControl

来自分类Dev

UserControl绑定到Model属性

来自分类Dev

将资源属性绑定到DataContext属性

来自分类Dev

使用依赖属性绑定到 UserControl 中 ListBox 的 ItemsSource

来自分类Dev

将属性从 Window 绑定到 DataGridCell 的 DataTrigger