[英]Access other xaml controls data in another control's event
我在下面的列表框中綁定了來自定義的類(SavedDataClass)的數據。當用戶單擊鏈接“ Update”時,我想訪問該SavedDataClass特定實例的其他成員的全部數據。是否可以訪問該數據像那樣 ? 我的意思是當調用其成員之一時如何訪問列表框項目實例中的其他xxaml控件數據。
<ListBox x:Name="lstAreaDetails" Grid.Row="1" Margin="0,10,0,0" >
<ListBox.ItemTemplate >
<DataTemplate >
<StackPanel >
<StackPanel Orientation="Horizontal">
<TextBlock Foreground="White" Name="MyDateTime" Text="{Binding MyDateTime}"></TextBlock>
</StackPanel>
<StackPanel >
<HyperlinkButton Content="{Binding SavedName}" Name="lnkSAvedName" Click="HyperlinkButton_Click_1" />
<HyperlinkButton Content="{Binding Update}" Name="lnkUpdate" Click="lnkUpdate_click"/>
</StackPanel>
<TextBlock Text="{Binding ResAddress}" Name="txtResAddress" TextWrapping="Wrap" ></TextBlock>
<TextBlock >OtherDetails:</TextBlock>
<TextBlock Text="{Binding Area}" Name="txtArea" TextWrapping="Wrap"></TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
public class SavedDataClass
{
public string MyDateTime { get; set; }
public string SavedName { get; set; }
public string Update{ get; set; }
public string ResAddress { get; set; }
public string Area{ get; set; }
public string OptionalAddressLine1{ get; set; }
public string OptionalAddressLine2{ get; set; }
}
更新鏈接點擊將具有以下事件處理程序:
private void lnkUpdate_click(object sender, RoutedEventArgs e)
{
//here I want to access other controls data e.g. MyDateTime,SavedName,ResAddress,Area,OptionalAddressLine1,OptionalAddresLine2
}
在這些情況下, FrameworkElement
的Tag
屬性用於傳輸駐留在要綁定到的DataContext
的基礎數據對象。 您的代碼看起來像這樣:
<ListBox x:Name="lstAreaDetails" Grid.Row="1" Margin="0,10,0,0">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Foreground="White" Name="MyDateTime" Text="{Binding MyDateTime}"></TextBlock>
</StackPanel>
<StackPanel >
<HyperlinkButton Content="{Binding SavedName}" Name="lnkSAvedName" Click="HyperlinkButton_Click_1" />
<HyperlinkButton Tag="{Binding}" Content="{Binding Update}" Name="lnkUpdate" Click="lnkUpdate_click"/>
</StackPanel>
<TextBlock Text="{Binding ResAddress}" Name="txtResAddress" TextWrapping="Wrap" ></TextBlock>
<TextBlock >OtherDetails:</TextBlock>
<TextBlock Text="{Binding Area}" Name="txtArea" TextWrapping="Wrap"></TextBlock>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
注意,在第二個超鏈接按鈕上,我添加了Tag
屬性。 您的后台代碼看起來像這樣:
private void lnkUpdate_click(object sender, RoutedEventArgs e)
{
var hyperlinkButton = sender as HyperlinkButton;
if (hyperlinkButton == null)
return;
var savedDataClass = hyperlinkButton.Tag as SavedDataClass;
// Do whatever you want with the saved data class instance here...
}
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.