0

我知道与此类似的问题在 SO 中已多次提出。但他们都没有解决我的问题,并且在理解这些答案时遇到了一些困难。这是我的情况;我有一个ItemsControl我已经使用ItemTemplate并绑定了一些数据。

<Window.Resources>        
    <DataTemplate x:Key="AdditionalFieldTemlate">
        <Grid>
            <TextBlock Text="{Binding InfoName}"/>
            <TextBox Text="{Binding InfoValue,Mode=TwoWay}" Name="CustomValue"/>
        </Grid>
    </DataTemplate>
</Window.Resources>
<Grid>
    <ItemsControl ItemsSource="{Binding AdditionalInformation}" x:Name="additionalInfo" ItemTemplate="{DynamicResource AdditionalFieldTemlate}"/>
</Grid>  

TextBox单击Button. _ 不知道如何访问这些文本框。请帮我。

4

2 回答 2

1

您通常不会访问 TextBoxes(外观)......您访问的是绑定的数据。

因此,您可以按如下方式更改集合中的“数据”:

foreach (var item in AdditionalInformation)
{
    item.InfoValue = "";
}

然后将清空“文本框”。

确保您已在 ....INotifyPropertyChanged使用的类上实现,AdditionalInformation以便在InfoValue更改属性时会引发通知。

于 2013-02-05T10:26:29.453 回答
0

文本框中的文本数据绑定到类的 InfoValue 属性。像这样实现类和属性:

class InfoClass: INotifyPropertyChanged
{
    private string _infoValue;

    ...

    public string InfoValue
    {
        get { return _infoValue; }
        set
        {
            _infoValue = value;
            OnNotifyPropertyChanged("InfoValue")
        }
    }

    ...

    public event PropertyChangedEventHandler PropertyChanged;

    private void OnPropertyChanged(string property)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(property));
    }
}

然后按照 colinsmith 在您的按钮单击处理程序(或命令,如果您使用 MVVM 方法)中的建议进行操作。绑定将被通知更改并且视图将被更新。

于 2013-02-05T10:36:55.823 回答