0

我还在学习 Caliburn.micro,所以这可能是一个愚蠢的问题。我有一个 ListView,里面有一个 GridView。我希望能够单击一行并让它更改 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 经验的人。

谢谢。

泥泞的

4

1 回答 1

0

解决方案由 Coding Gorilla 提供 - 我在 titleText 声明中错过了它。它应该调用属性而不是私有成员 - 像这样:

String _titleText = "";
    public string titleText
    {
        get { return _titleText; }
        set
        {
            if (_titleText != value)
            {
                _titleText = value;
                NotifyOfPropertyChange(() => titleText);
            }
        }
    }

改变了这一点,它奏效了——所以只是我没有看到问题的一个例子。谢谢。

于 2012-08-24T05:54:24.197 回答