C# C WPF数据绑定不工作
我是c语言的新手,我正在尝试创建一个包含菜单和文本块的WPF窗口,但我的数据绑定都不起作用。 我在互联网上看到了几个页面和论坛,我看到人们总是在谈论设置DataContext,但我不知道为什么我的主窗口不被视为DataContext。我做错什么了吗?这是我的xaml:C# C WPF数据绑定不工作,c#,wpf,xaml,C#,Wpf,Xaml,我是c语言的新手,我正在尝试创建一个包含菜单和文本块的WPF窗口,但我的数据绑定都不起作用。 我在互联网上看到了几个页面和论坛,我看到人们总是在谈论设置DataContext,但我不知道为什么我的主窗口不被视为DataContext。我做错什么了吗?这是我的xaml: <Window x:Class="holdingseditor.MainWindow" <Grid> <TextBlock Height="30" Margin="0,24,0,0" Width="
<Window x:Class="holdingseditor.MainWindow"
<Grid>
<TextBlock Height="30" Margin="0,24,0,0" Width="675" Text="{Binding DbRibbonText}" Background="{Binding DbRibbonColor}"/>
<TextBlock Height="30" Margin="675,24,0,0" Width="472" Background="{Binding WfRibbonColor}" Text="{Binding WfRibbonText}"/>
<Menu HorizontalAlignment="Left" Height="24" Margin="0,0,0,0" VerticalAlignment="Top" Width="1155">
<MenuItem Header="_View">
<MenuItem Header="Show _Archived Files History" Height="22" FontSize="12" Margin="0" Click="M_ShowArchivedFiles" IsEnabled="{Binding Path=DiesenameLoaded}"/>
</MenuItem>
<MenuItem Header="_Workflow">
<MenuItem Header="O_utside Mode" Height="22" FontSize="12" Margin="0" IsCheckable="true" IsChecked="{Binding IsWfOutside}"/>
</MenuItem>
</Menu>
</Grid>
</Window>
看起来不像是在设置DataContext 您必须告诉xaml在哪里查找其数据。您可能会在输出窗口中看到绑定表达式错误 在你的构造器里 this.DataContext=this 这将告诉您的xaml转到MainWindow.cs文件以查找绑定到的属性。我们这样做是为了当您开始学习MVVM时,可以将DataContext设置为viewmodel并停止使用隐藏的代码 下面是一个简单的例子: 在MainWindow.xaml中
<TextBlock Text="{Binding myTextProperty}"/>
请注意,我是在设置DataContext之前设置属性的。我是故意这么做的。您的xaml将只查找其属性值一次
如果希望在更改属性时更新,则需要实现InotifyPropertyChanged
您可以在这篇关于堆栈溢出的文章中阅读到它,它看起来不像是在设置DataContext 您必须告诉xaml在哪里查找其数据。您可能会在输出窗口中看到绑定表达式错误 在你的构造器里 this.DataContext=this 这将告诉您的xaml转到MainWindow.cs文件以查找绑定到的属性。我们这样做是为了当您开始学习MVVM时,可以将DataContext设置为viewmodel并停止使用隐藏的代码 下面是一个简单的例子: 在MainWindow.xaml中
<TextBlock Text="{Binding myTextProperty}"/>
请注意,我是在设置DataContext之前设置属性的。我是故意这么做的。您的xaml将只查找其属性值一次
如果希望在更改属性时更新,则需要实现InotifyPropertyChanged
您可以在这篇关于堆栈溢出的文章中阅读到,谢谢您的回答。在构造函数中设置DataContext最终会改变很多事情。它适用于我的菜单项绑定,但对于我在文本和背景上的两个TextBlock绑定中的绑定,它总是不起作用。同样对于属性更新,我认为它可以很好地工作,而不需要做其他事情。我觉得这没什么大不了的。老实说,对于一个使用C++开发的人来说,我觉得手动改变所有的东西都比较容易,而不是使用这些数据库。xaml需要SolidColorBrush。@pashashadkami是的,您必须确保将正确的类型传递到您试图绑定的内容中。您也可以使用转换器。也就是说,每一位开始学习数据绑定的工程师都说过,手工操作更容易。直到您真正了解了如何使用MVVM以及它的强大功能。那你就永远不会回头。谢谢你的回答。在构造函数中设置DataContext最终会改变很多事情。它适用于我的菜单项绑定,但对于我在文本和背景上的两个TextBlock绑定中的绑定,它总是不起作用。同样对于属性更新,我认为它可以很好地工作,而不需要做其他事情。我觉得这没什么大不了的。老实说,对于一个使用C++开发的人来说,我觉得手动改变所有的东西都比较容易,而不是使用这些数据库。xaml需要SolidColorBrush。@pashashadkami是的,您必须确保将正确的类型传递到您试图绑定的内容中。您也可以使用转换器。也就是说,每一位开始学习数据绑定的工程师都说过,手工操作更容易。直到您真正了解了如何使用MVVM以及它的强大功能。那你就永远不会回头。
public partial class MainWindow : Window{
public String myTextProperty {get; set;}
public MainWindow(){
InitializeComponent();
myTextPropety = "It works!";
this.DataContext = this;
}
}