私はまだ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>
ご覧のとおり、MountLeftButtonUpイベントを処理するためにcal:Message.Attachを呼び出しています。
これにより、次のコードが呼び出されます。
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の経験がある人。
ありがとう。
マダーズ