从Code Behind到达DataTemplate元素

时间:2013-07-23 09:22:05

标签: c# wpf windows-8 windows-store-apps

我有这段代码(大型XAML文件的一部分):

<ListView>
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Rectangle Name="R1"/>
                <Rectangle Name="R2" Tapped="RTEventHandler"/>
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

当我点击R2时,我想更改R1矩形的backgorund,所以我需要从CodeBehind到达R1。我试图给x:名称的元素,但它没有帮助。

帮助

2 个答案:

答案 0 :(得分:1)

我建议您绑定Rectangle的颜色,而不是尝试查找UI元素。 将您的xaml更改为

<DataTemplate>
    <Grid>
        <Rectangle Name="R1" Fill="{Binding FirstBackground}"/>
        <Rectangle Name="R2" Tapped="RTEventHandler"/>
    </Grid>
</DataTemplate>

tap事件将获取tapped元素的DataContext并设置FirstBackground

var viewModel = (sender as Rectangle).DataContext as MyViewModel;
viewModel.FirstBackground = new SolidColorBrush(Colors.Green);

确保您的MyViewModel类实现了INotifyPropertyChanged

答案 1 :(得分:0)