2013-05-02 62 views
0

我有下面的列表框,我綁定數據從一個類(SavedDataClass)defined.When用戶點擊鏈接「更新」我想訪問其他成員的整個數據SavedDataClass的特定實例。是否可以像這樣訪問數據?我的意思是如何當它的成員之一被調用訪問列表框項實例等xxaml控制數據..在另一個控件的事件中訪問其他xaml控件數據

 <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 
    } 
+0

你的數據對象(SaveDataClass)應該在DataContext屬性中點擊按鈕 – jure 2013-05-02 16:21:25

+0

我有屬性「public string Update {get; set;}」綁定到更新按鈕。 – krrishna 2013-05-02 16:23:10

回答

1

在這些情況下, 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... 
} 

希望這會有所幫助。

+0

yup.It works.Many謝謝。 – krrishna 2013-05-02 16:33:57

相關問題