![](/img/trans.png)
[英]How to get the Text from TextBlock inside a DataTemplate in code-behind
[英]How to get text from TextBox inside ListViewItem's DataTemplate
單擊按鈕后,我不知道如何從“ firstBox”和“ secondBox”中獲取文本。
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<!-- some code -->
<TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Data}" VerticalAlignment="Top" Height="18" Width="100" FontSize="13.333" Margin="162,9,0,0"/>
<TextBlock HorizontalAlignment="Left" Margin="0,35,0,0" TextWrapping="Wrap" Text="{Binding D_gospodarzy}" FontSize="14.667" VerticalAlignment="Top" Height="59" Width="100"/>
<TextBlock HorizontalAlignment="Center" Margin="268,35,7,0" TextWrapping="Wrap" Text="{Binding D_gosci}" FontSize="14.667" VerticalAlignment="Top" Width="100" Height="59"/>
<TextBox x:Name="firstBox" ... />
<Button Content="Click" " Click="Button_Click_1"/>
<TextBox x:Name="secondBox" ... />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
我只得到對象
private void Button_Click_1(object sender, RoutedEventArgs e)
{
var myobject = (sender as Button).DataContext;
}
有很多方法可以做到這一點,例如,您可以遍歷單擊按鈕的父級的VisualTree並使用所需的名稱檢索TextBox 。 在這種情況下,我將利用yasen在此答案中編寫的擴展方法。
然后,它看起來像這樣:
private void Button_Click_1(object sender, RoutedEventArgs e)
{
var parent = (sender as Button).Parent;
TextBox firstOne = parent.GetChildrenOfType<TextBox>().First(x => x.Name == "firstBox");
Debug.WriteLine(firstOne.Text);
}
請記住將擴展方法放在靜態類中的某個位置:
public static class Extensions
{
public static IEnumerable<T> GetChildrenOfType<T>(this DependencyObject start) where T : class
{
// rest of the code
這是獲取文本的方法。
String text1 = firstBox.Text;
String text2 = secondBox.Text;
注意: firstBox
和secondBox
必須是類成員,才能在不同的類方法中使用它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.