gpt4 book ai didi

c# - InitializeComponent 上的 StackOverflowException

转载 作者:行者123 更新时间:2023-11-30 21:19:00 25 4
gpt4 key购买 nike

我正在尝试关注 this little tutorial ,但我不断收到此异常。

相关的 XAML 如下所示:

    <StatusBar Margin="0,288,0,0" Name="statusBar" Height="23" VerticalAlignment="Bottom">
<StatusBar.DataContext>
<m:MainWindow />
</StatusBar.DataContext>
<TextBlock Name="statusText" Text="{Binding Path=StatusBarText, NotifyOnTargetUpdated=True}" DataContext="{Binding}">
<TextBlock.Triggers>
<EventTrigger RoutedEvent="Binding.TargetUpdated">
<BeginStoryboard>
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity">
<EasingDoubleKeyFrame KeyTime="0" Value="0"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.25" Value="1"/>
<EasingDoubleKeyFrame KeyTime="0:0:4" Value="1"/>
<EasingDoubleKeyFrame KeyTime="0:0:5" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</TextBlock.Triggers>
</TextBlock>
</StatusBar>

我猜我得到了 StackOverflowException,因为我正在尝试使用 MainWindow 作为 DataContext。我想使用 MainWindow 因为它似乎是放置我的 StatusBarText 属性的合乎逻辑的地方,

public partial class MainWindow : Window
{
public string StatusBarText { get; set; }

它使我的代码隐藏事件处理程序更容易访问。

那我该怎么办呢?我应该把这个属性放在哪里?或者有没有办法将 DataContext 设置为“this”,这样它就不会创建 MainWindow 的新实例而只是引用它自己?

最佳答案

我通常在构造函数中的代码隐藏中设置我的 DataContext(我通常使用 MVVM,但在小型临时项目中使用了一个窗口):

public MainWindow()
{
statusBar.DataContext = this;
}

请注意,在您显示的代码示例中,您只会获得初始 StatusBarText 值,因为您没有实现 INotifyPropertyChanged。

关于c# - InitializeComponent 上的 StackOverflowException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3971786/

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