我对c#很新,我试图创建一个带有菜单和文本块的WPF窗口,但没有任何数据绑定工作。 我在互联网上看到了几个页面和论坛,我看到人们总是在讨论设置DataContext,但我不知道为什么我的MainWindow不被视为DataContext。我做错了什么吗?这是我的XAML:C#WPF数据绑定无法正常工作
<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>
我的属性看起来像:
namespace holdingseditor
{
public partial class MainWindow : Window
{
public bool DiesenameLoaded
{get { return false; }}
public bool IsWfOutside
{get { return true; }}
public string DbRibbonText
{get {return "my text";}}
public Color DbRibbonColor
{get {return Color.FromArgb(255, 0, 0, 255);}}
}
}
谢谢安东尼的回答更新。在构造函数中设置DataContext最终会改变许多事情。 它适用于我的菜单项绑定,但它始终不能用于我的两个TextBlock(文本和背景上的绑定)中的绑定。 也为财产更新,我认为它很好地工作,而不必做别的。看起来很多并发症并不是什么大问题。老实说,对于一个用C++开发的人来说,在我看来,更容易手动更改所有内容,而不是使用这些数据绑定。 –
好吧,我发现TextBlocks,问题是我的颜色的类型。 xaml预计SolidColorBrush。 –
@pashashadkami是的,你必须确保你传递正确的类型到你想绑定的东西。您也可以使用转换器。也就是说,每一位开始学习数据绑定的工程师都表示,手工更容易做到。直到你真正学会了如何做到这一点,以及MVVM的功能如何。那么你永远不会回头看。 –