Caliburn.micro Mouseclick更新TextBlock

时间:2012-08-23 17:10:15

标签: c# wpf caliburn.micro

我还在学习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

1 个答案:

答案 0 :(得分:0)

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

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

改变了它并且它起了作用 - 所以只是我没有看到问题的情况。 感谢。

相关问题