Изменить содержимое кнопки с помощью обработчика событий - PullRequest
0 голосов
/ 03 апреля 2012

Код содержит кнопки в сетке данных.Каждый из них содержит текст «Отправить».

<DataGrid.Columns>
    <DataGridTextColumn Width="*" 
                        Header="Uid" 
                        Binding="{Binding Uid}"/>
    <DataGridTextColumn Width="*" 
                        Header="Type" 
                        Binding="{Binding Type}"/>
    <DataGridTextColumn Width="*" 
                        Header="ChannelType" 
                        Binding="{Binding ChannelType}"/>

    <DataGridTemplateColumn Width="*">

    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Button Name="btnSend" Click="btnSend_Click">Send</Button>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

Когда я нажимаю эту кнопку, текст «Отправить» должен быть изменен на «Отмена».Как я могу это сделать?

private void btnSend_Click(object sender, RoutedEventArgs e)
{
    //If I click first button, only first button should be changed
    //from "Send" to "Cancel"
    //Rest button should remain as "Send"
}

1 Ответ

0 голосов
/ 03 апреля 2012

Быстро и грязно:

private void btnSend_Click(object sender, RoutedEventArgs e)
{
    changeBtnText((Button)sender, "Cancel");
}

private void changeBtnText(Button button, String text)
{
    if (Button.Dispatcher.CheckAccess())
    {
        button.Content = text;
    }
    else
    {
        Button.Dispatcher.BeginInvoke(()=>
        {
            changeBtnText(button);
        });
    }
}

Вам необходимо поместить команду в очередь диспетчера, когда вы изменяете пользовательский интерфейс, который разрешено делать только диспетчеру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...