Я пытаюсь следовать этому маленькому учебнику , но я продолжаю получать это исключение.
Соответствующий 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 и просто ссылался на себя?