Как получить доступ к связанному значению кнопки? - PullRequest
0 голосов
/ 05 июля 2011

У меня есть следующий XAML

<Window.Resources>
    <DataTemplate x:Key="SelectButtonColumnDataTemplate">
        <Button Content="Select" Command="{Binding SelectItemCommand}" Click="SelectButtonClick" />
    </DataTemplate>
</Window.Resources>

<Grid x:Name="LayoutRoot">
<ListView x:Name="listFeedSearch" HorizontalAlignment="Left" Width="542.5" RenderTransformOrigin="0.5,0.5" ItemsSource="{Binding SearchCollection}">
    <ListView.RenderTransform>
        <TransformGroup>
            <ScaleTransform/>
            <SkewTransform/>                
            <RotateTransform/>                
            <TranslateTransform/>            
            </TransformGroup>        
            </ListView.RenderTransform>        
    <ListView.View>            
        <GridView>                
            <GridViewColumn Width="150" Header="Feed Name" x:Name="listFeedSearchName" DisplayMemberBinding="{Binding FeedName}"  />                
            <GridViewColumn Width="280" Header="Feed Address" x:Name="listFeedSearchAddress" DisplayMemberBinding="{Binding FeedUrl}" />                
            <GridViewColumn Width="100" Header=" " CellTemplate="{StaticResource SelectButtonColumnDataTemplate}" />            
        </GridView>        
        </ListView.View>    
</ListView>     
</Grid>

Добавьте следующий обработчик событий:

private void SelectButtonClick(object sender, RoutedEventArgs e)
        {

        }

Что я хотел бы сделать, так это вывести отдельные строки в связанное значение.

Как бы я это сделал, я знаю, что это что-то вроде:

var data = (sender as Button)...

Спасибо

Ответы [ 2 ]

1 голос
/ 05 июля 2011

Если вы установите для кнопки CommandParameter значение (спасибо Болу):

"{Binding}"

, то следующий код извлечет текущий объект, по которому щелкнули, и отобразит окно сообщения.где foo - класс, используемый для заполнения вида сетки

 public class foo
 {
    string FeedName {get;set;}
    string FeedUrl {get;set;}
 }

 public void InitialiseListView(List<Foo> Items)
 {
    listFeedSearch.ItemsSource = Items;
 }

 private void SelectButtonClick(object sender, RoutedEventArgs e)
 {
    foo b = (foo)(sender as Button).CommandParameter;

    string s = string.format("Name: {0} URL: {1}",b.FeedName,b.FeedUrl);
    MessageBox.Show(s);
}
1 голос
/ 05 июля 2011

Если я правильно вас понимаю, вам нужно использовать {Binding}: Xaml: привязка к текущему DataContext

Ссылка: Понимание привязки WPF CommandParameter = "{Связывание}"

...