我知道类似的问题已在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
文本设置为空(datatemplate中的所有文本框文本)。不知道如何访问这些文本框。请帮帮我。
答案 0 :(得分:1)
您通常不会访问TextBoxes(外观)....您可以访问绑定的数据。
因此,您可以按如下方式更改集合中的“数据”:
foreach (var item in AdditionalInformation)
{
item.InfoValue = "";
}
然后将清空“TextBoxes”。
确保您已对INotifyPropertyChanged
....正在使用的类实施AdditionalInformation
,以便在更改InfoValue
属性时会发出通知。
答案 1 :(得分:0)
文本框中的文本数据绑定到类的InfoValue属性。像这样实现类和proprty:
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方法,则执行命令)。绑定将通知更改,视图将更新。