C# Caliburn.micro鼠标单击更新文本块

C# Caliburn.micro鼠标单击更新文本块,c#,wpf,caliburn.micro,C#,Wpf,Caliburn.micro,我还在学习Caliburn.micro,所以这可能是一个愚蠢的问题。 我有一个列表视图,里面有一个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" VerticalAli

我还在学习Caliburn.micro,所以这可能是一个愚蠢的问题。 我有一个列表视图,里面有一个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>
titleText(我正在尝试更新的文本块)的定义如下:

String _titleText = "";
    public string titleText
    {
        get { return _titleText; }
        set
        {
            if (_titleText != value)
            {
                _titleText = value;
                NotifyOfPropertyChange(() => _titleText);
            }
        }
    }
但是,这不会更新TextBlock。我进入代码,看到titleText在代码中发生了更改,但它没有显示出来。 我也改变了这一点,只是做同样的事情,点击一个图像,它成功地工作

那么这里有什么我可能遗漏的吗?任何有Caliburn.micro经验的人

谢谢


Mudders

解决方案是通过编码Gorilla提供的——我在titleText声明中遗漏了它。它应该调用属性,而不是私有成员,就像这样:

String _titleText = "";
    public string titleText
    {
        get { return _titleText; }
        set
        {
            if (_titleText != value)
            {
                _titleText = value;
                NotifyOfPropertyChange(() => titleText);
            }
        }
    }
改变了这一点,它起到了治疗作用——这只是我没有看到问题的一个例子。
谢谢。

我对Caliburn没有太多经验,但应该是:
NotifyOfPropertyChange(()=>titleText)
?财产,而不是私人成员?编码大猩猩!谢谢你发现了明显的问题!我想我已经看了这么久,我甚至没有注意到它了!谢谢我的愚蠢!
String _titleText = "";
    public string titleText
    {
        get { return _titleText; }
        set
        {
            if (_titleText != value)
            {
                _titleText = value;
                NotifyOfPropertyChange(() => titleText);
            }
        }
    }