我有一些名为Foo的WPF控件。使用DevExpress LoadingDecorator的网格结构如下所示:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="60" />
</Grid.RowDefinitions>
<StackPanel Grid.Row="0">
<dx:LoadingDecorator Name="Decorator" IsSplashScreenShown="{Binding Path=ShowLoader}" SplashScreenLocation="CenterWindow">
<dx:LoadingDecorator.SplashScreenTemplate>
<DataTemplate>
<dx:WaitIndicator DeferedVisibility="True">
<dx:WaitIndicator.ContentTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBlock Text="Operation:" FontSize="15"/>
<TextBlock Text="{Binding Path=CurrLoadStat}"/>
</StackPanel>
</DataTemplate>
</dx:WaitIndicator.ContentTemplate>
</dx:WaitIndicator>
</DataTemplate>
</dx:LoadingDecorator.SplashScreenTemplate>
</dx:LoadingDecorator>
</StackPanel>
...
</Grid>
Base ViewModel类实现了INotifyPropertyChanged接口和ViewModel类(FooViewModel),用作DataContext,用于控制,上面描述的Grid继承自它。我已经实现了属性来更改第二个TextBlock元素中的文本属性:
private string currLoadStat = "Preparing data...";
public string CurrtLoadStat
{
get
{
return currLoadStat;
}
set
{
currLoadStat = value;
OnPropertyChanged("CurrLoadStat");
}
}
我的问题是绑定指令不起作用,我只看到第一个TextBlock中定义的文本。 你能为我提供解决这个问题的解决方案吗?
答案 0 :(得分:2)
您的属性在名称中间有一个“t”,但您传递给OnPropertyChanged
的绑定路径(XAML)和魔术字符串没有。引发PropertyChanged
事件方法时传递的字符串必须与视图模型的属性名称完全匹配。
如果你正在使用C#5或6,那么切换到使用其中一种方法outlined here,你将无需传递魔法字符串。