我还在学习Caliburn.micro,所以这可能是一个愚蠢的问题。 我有一个带有GridView的ListView。我希望能够单击一行并让它更改ListView外部的TextBlock文本。
<TextBlock x:Name="titleText" Grid.Row="6" Grid.Column="4" Text="View a report of all current applications" TextWrapping="Wrap" Margin="5" VerticalAlignment="Center" FontWeight="Bold" />
<ListView VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Name="listView1" SelectedItem="{Binding Key}" ItemContainerStyle="{DynamicResource CustomListViewItemStyle}" AlternationCount="2"
ItemsSource="{Binding}" DataContext="{StaticResource OrderGroup}" Grid.Column="2" Grid.Row="10" Grid.ColumnSpan="5" Height="200" cal:Message.Attach="[Event MouseLeftButtonUp]=[Action HandleClick($eventArgs)]">
<ListView.View>
<GridView AllowsColumnReorder="False" x:Name="GridView1">
<GridViewColumn Header="Client Name" DisplayMemberBinding="{Binding Path=ClientName}" ></GridViewColumn>
<GridViewColumn Header="Application ID" DisplayMemberBinding="{Binding Path=ID}" ></GridViewColumn>
</GridView>
</ListView.View>
</ListView>
如您所见,我正在调用cal:Message.Attach来处理MountLeftButtonUp事件。
这会调用以下代码:
public void HandleClick(RoutedEventArgs e)
{
titleText= "SOME TEST HERE";
}
titleText(我试图更新的TextBlock)定义如下:
String _titleText = "";
public string titleText
{
get { return _titleText; }
set
{
if (_titleText != value)
{
_titleText = value;
NotifyOfPropertyChange(() => _titleText);
}
}
}
但是,这不会更新TextBlock。我进入代码,看到titleText在代码中被更改,但它没有显示。 我也改变了这一点,只是在点击图像时做同样的事情并且它成功运作。
那么我可能会遗漏一些东西吗?任何有Caliburn.micro经验的人。
感谢。
Mudders
答案 0 :(得分:0)
解决方案由Coding Gorilla提供 - 我在titleText声明中错过了它。它应该一直在调用属性而不是私有成员 - 就像这样:
String _titleText = "";
public string titleText
{
get { return _titleText; }
set
{
if (_titleText != value)
{
_titleText = value;
NotifyOfPropertyChange(() => titleText);
}
}
}
改变了它并且它起了作用 - 所以只是我没有看到问题的情况。 感谢。