2013-12-25 2 views
0

У меня есть следующий стиль в моем XAML:Стиль триггера с пользовательскими парами

<Style x:Key="NumberButton" TargetType="Button"> 
    <Setter Property="Width" Value="Auto"/> 
    <Setter Property="Height" Value="Auto"/> 
    <Setter Property="Margin" Value="2"/> 
    <Setter Property="ContentTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <Label Content="{Binding}" FontSize="20" FontFamily="Consolas"/> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
    <EventSetter Event="Click" Handler="OnClicked"/> 
</Style> 

создать 10 <Button> «с и я применить этот стиль к каждому из них. Content="" каждой кнопки устанавливается на номер 0-9. Я хотел бы создать обработчик событий для каждой из этих кнопок (через сам стиль), который передаст значение свойства Content обработчику события в коде позади.

Я все еще новичок в WPF, поэтому любая помощь будет принята с благодарностью. Спасибо!

+1

Отправка отправителя события в обработчик события на кнопку и чтение содержимого может работать, нет? Смотрите это: http://stackoverflow.com/questions/2006507/add-parameter-to-button-click-event – hschne

ответ

1

Вы можете получить Content от кнопки отправителя:

void OnClicked(object sender, RoutedEventArgs e) 
{ 
    string content = ((Button)sender).Content.ToString(); 
} 

вызов ToString() на содержании, так как его типа объекта.

+1

Это просто и не требует чрезмерного усложнения XAML! Благодаря! –

+0

Рад помочь Роберту. :) –

1

Попробуйте

<Style x:Key="NumberButton" TargetType="Button"> 
<Setter Property="Width" Value="Auto"/> 
<Setter Property="Height" Value="Auto"/> 
<Setter Property="Margin" Value="2"/> 
<Setter Property="Tag" Value="{Binding}"/> 
<Setter Property="ContentTemplate"> 
    <Setter.Value> 
     <DataTemplate> 
      <Label Content="{Binding}" FontSize="20" FontFamily="Consolas"/> 
     </DataTemplate> 
    </Setter.Value> 
</Setter> 
<EventSetter Event="Click" Handler="OnClicked"/> 
</Style> 

Затем в коде позади

void OnClicked(object sender, RoutedEventArgs e) 
{ 
    var button = sender as Button; 
    var content= button.Tag; // this is the value you want 
} 
Смежные вопросы