【问题标题】:Accessing Properties of elements in a Data Template访问数据模板中元素的属性
【发布时间】:2018-02-20 21:02:57
【问题描述】:

如何从 c# 访问以下 XAML 代码中的 Textblock(txtlink) 的属性?引用 txtlink。不起作用并导致错误

名称 txtlink 在当前上下文中不存在

        <Grid Grid.Row="1">
        <ListBox  ItemsSource="{Binding CurrentRss.Channel.NewsItems}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="80"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>

                        <Button Style="{StaticResource ImageButtonStyle}" Click="Button_Click" >
                            <Image Source="{Binding Image}"/>
                        </Button>
                        <TextBlock Grid.Column="1" Text="{Binding Title}"/>

                        <TextBlock x:Name="txtlink"  Text="{Binding Link}" Background="Black" Foreground="#FFD1DA0B"/>

                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>

【问题讨论】:

  • 使用SelectedItem绑定,那么你就可以访问选中的项目了。从那里您可以访问Link 属性。
  • 创建的ListBox的每一行有一个TextBlock?您需要访问哪一个?什么时候需要访问它?
  • 你运气好吗?

标签: c# wpf xaml data-binding


【解决方案1】:

使用 SelectedItem 绑定,然后您将可以访问所选项目。从那里您可以访问 Link 属性。
xml:

<ListBox  ItemsSource="{Binding CurrentRss.Channel.NewsItems}" SelectedItem="{Binding SelectedNewsItem}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="80"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>

                    <Button Style="{StaticResource ImageButtonStyle}" Click="Button_Click" >
                        <Image Source="{Binding Image}"/>
                    </Button>
                    <TextBlock Grid.Column="1" Text="{Binding Title}"/>

                    <TextBlock x:Name="txtlink"  Text="{Binding Link}" Background="Black" Foreground="#FFD1DA0B"/>

                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>  

在你的 ViewModel 中:

public NewsItem SelectedNewsItem {get;set;}//INPC when it is being set check for null and then process the selected item.

【讨论】:

    猜你喜欢
    • 2014-07-31
    • 2014-02-16
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多