簡體   English   中英

在另一個控件的事件中訪問其他xaml控件數據

[英]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
    }

在這些情況下, FrameworkElementTag屬性用於傳輸駐留在要綁定到的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM