首页 > 解决方案 > WPF将值从TextBlock发送到方法

问题描述

主窗口.xaml

<TextBox Text="{Binding SummonerNameDTO}"/>
<Button Click="Button_Click">Find</Button>

Button_Click

private void Button_Click(object sender, RoutedEventArgs e)
{
     var SummonerName = _summonerDTOService.GetSummonerDTO(_viewModel.SummonerNameDTO).Id;
}

SummonerDTOResponse GetSummonerDTO()

public class SummonerDTOService
{
    RestClient client = new RestClient("https://euw1.api.riotgames.com/lol/summoner/v4/summoners/");
    public SummonerDTOResponse GetSummonerDTO(string SummonerName)
    {
        var request = new RestRequest("by-name/{summonerName}")
            .AddParameter("summonerName", SummonerName, ParameterType.UrlSegment)
            .AddParameter("api_key", "api-key");
        var response = client.Execute<SummonerDTOResponse>(request);

        if (!response.IsSuccessful)
        {
            return default;
        }
        return response.Data;
    }
}
public class SummonerDTOResponse
{
    public string Id { get; set; }
}

}

我想从 TextBlock 值发送到 summonerDTOResponse GetSummonerDTO()。

标签: c#wpf

解决方案


为 TextBlock 添加名称

<TextBox x:Name="txtSummonerNameDTO" Text="{Binding SummonerNameDTO}"/>

并使用 TextBlock 值传递

var summonerDTO = _summonerDTOService.GetSummonerDTO(txtSummonerNameDTO.Text);

由于 TextBox 的 Text 属性绑定到SummonerNameDTO视图模型中的属性,因此您通常会访问视图模型而不是 UI:

var summonerDTO = _summonerDTOService.GetSummonerDTO(
    ((YourViewModel)DataContext).SummonerNameDTO);

推荐阅读