gpt4 book ai didi

C# WPF 数据绑定(bind)不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 21:10:30 24 4
gpt4 key购买 nike

我是 c# 的新手,我正在尝试创建一个带有菜单和文本 block 的 WPF 窗口,但我的数据绑定(bind)工作都没有。我在互联网上看到了几个页面和论坛,我看到人们总是在谈论设置 DataContext 但我不知道为什么我的 MainWindow 不被视为 DataContext。我做错了什么吗?这是我的 xaml:

<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

您必须告诉您的 xaml 到哪里寻找它的数据。您可能会在输出窗口中看到绑定(bind)表达式错误。

在你的构造函数中放置

this.DataContext = this;

这将告诉您的 xaml 转到 MainWindow.cs 文件以查找您要绑定(bind)到的属性。我们这样做是为了当您开始学习 MVVM 时,您可以将您的 DataContext 变成一个 View 模型并停止使用后台代码。

这是一个简单的例子:

在您的 MainWindow.xaml 中

<TextBlock Text="{Binding myTextProperty}"/>

在您的 MainWindow.xaml.cs 中

public partial class MainWindow : Window{
public String myTextProperty {get; set;}

public MainWindow(){
InitializeComponent();
myTextPropety = "It works!";
this.DataContext = this;
}
}

请注意,我在设置 DataContext 之前设置属性。我是故意这样做的。您的 xaml 只会去寻找它的属性值一次。

如果你希望它在你更改属性时更新,那么你需要实现 INotifiyPropertyChanged

您可以阅读关于 on the MSDN Article 的内容以及这篇 Stack Overflow 文章 Implementing INotifyPropertyChanged - does a better way exist?

关于C# WPF 数据绑定(bind)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38075420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com